#!/usr/bin/env bash
# Deploy do site estático combinado para a VM via rsync/SSH.
#
# Substitui o GitLab Pages (a instância gitlab.ufpe.br não tem runner).
# O build roda aqui (na máquina que executa este script) e é publicado na VM.
#
# Uso:
#   DEPLOY_HOST=deploy@vm.ufpe.br DEPLOY_PATH=/var/www/design-system ./scripts/deploy-vm.sh
#
# Variáveis:
#   DEPLOY_HOST  (obrigatória)  usuário@host SSH da VM
#   DEPLOY_PATH  (obrigatória)  diretório servido pelo nginx na VM
#   SSH_PORT     (opcional)     porta SSH, default 22
#   DRY_RUN      (opcional)     se =1, mostra o rsync sem aplicar
#
# NOTA sobre base path: o site é buildado sob "/design-system-ufpe/"
# (ver base nos vite.config.js). A VM deve servir o conteúdo sob esse
# mesmo prefixo. Se for usar um domínio dedicado na raiz, os base paths
# dos 3 apps precisam ser reajustados antes do build.
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

: "${DEPLOY_HOST:?defina DEPLOY_HOST (ex: deploy@vm.ufpe.br)}"
: "${DEPLOY_PATH:?defina DEPLOY_PATH (ex: /var/www/design-system)}"
SSH_PORT="${SSH_PORT:-22}"

echo "→ build do site combinado (build:pages)…"
pnpm build:pages

DIST="apps/ufpe-docs/dist"
test -f "$DIST/index.html" || { echo "✗ build falhou: $DIST/index.html ausente"; exit 1; }

RSYNC_FLAGS=(-avz --delete -e "ssh -p ${SSH_PORT}")
[ "${DRY_RUN:-0}" = "1" ] && RSYNC_FLAGS+=(--dry-run) && echo "  (DRY_RUN — nada será aplicado)"

echo "→ rsync ${DIST}/ → ${DEPLOY_HOST}:${DEPLOY_PATH}/ (porta ${SSH_PORT})"
rsync "${RSYNC_FLAGS[@]}" "${DIST}/" "${DEPLOY_HOST}:${DEPLOY_PATH}/"

echo "✓ deploy concluído"
