#!/usr/bin/env bash
# Build + déploie Umami sur o2switch (analytics.arnaud-merigeau.fr).
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_DIR="${UMAMI_BUILD_DIR:-/tmp/umami-build-o2switch}"
REMOTE_USER="${DEPLOY_USER:-sc1mear8437}"
REMOTE_HOST="${DEPLOY_HOST:-sc1mear8437.universe.wf}"
REMOTE_APP="${REMOTE_UMAMI_APP:-/home/${REMOTE_USER}/umami}"
SSH_KEY="${SSH_PRIVATE_KEY_FILE:-$ROOT/.secrets/deploy_key}"
[[ "$SSH_KEY" != /* ]] && SSH_KEY="$ROOT/$SSH_KEY"

SSH=(ssh -4 -i "$SSH_KEY" -o IdentitiesOnly=yes "${REMOTE_USER}@${REMOTE_HOST}")
RSYNC=(rsync -avz --delete -e "ssh -4 -i $SSH_KEY -o IdentitiesOnly=yes")

echo "→ Sync Umami standalone vers ${REMOTE_HOST}:${REMOTE_APP}"
"${RSYNC[@]}" \
  "${BUILD_DIR}/.next/standalone/" \
  "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_APP}/"

echo "→ Prisma client Linux (Passenger o2switch = debian-openssl-1.0.x)"
if [[ -f "${BUILD_DIR}/db/mysql/schema.prisma" ]]; then
  if ! grep -q 'debian-openssl-1.0.x' "${BUILD_DIR}/db/mysql/schema.prisma"; then
    echo "  Attention : ajoutez debian-openssl-1.0.x aux binaryTargets du schema Prisma MySQL." >&2
  fi
  (cd "${BUILD_DIR}" && DATABASE_URL='mysql://localhost/umami' npx prisma generate --schema=db/mysql/schema.prisma)
  "${RSYNC[@]}" \
    "${BUILD_DIR}/node_modules/.prisma/" \
    "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_APP%/umami}/nodevenv/umami/20/lib/node_modules/.prisma/"
fi

echo "→ Copie du wrapper Passenger"
"${RSYNC[@]}" \
  "$ROOT/infra/umami/o2switch/server.js" \
  "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_APP}/passenger.js"

echo "→ Déploiement terminé. Lancez les migrations si besoin :"
echo "  ssh … 'cd ~/umami && source ~/nodevenv/umami/22/bin/activate && npx prisma migrate deploy'"
