#!/usr/bin/env bash
# ============================================================================
# deploy.sh — build de backend y frontend, y publicación del frontend.
# ----------------------------------------------------------------------------
# Uso:
#   ./deploy.sh /home/USUARIO_CPANEL/analytics.intracool.site
#
# Qué hace:
#   1. Instala dependencias y compila el backend (backend/dist).
#   2. Instala dependencias y compila el frontend (app/dist), usando
#      app/.env.production (VITE_API_URL) automáticamente.
#   3. Copia el contenido de app/dist a la carpeta pública indicada.
#   4. Copia htaccess.example como .htaccess ahí, SOLO si no existe uno ya
#      (nunca sobrescribe un .htaccess que hayas personalizado).
#
# Qué NO hace (a propósito):
#   - No reinicia el backend en cPanel — eso se hace desde
#     Setup Node.js App > Restart (ver DEPLOY_CPANEL.md).
#   - No toca backend/.env — créalo/edítalo tú a partir de .env.example.
# ============================================================================

set -euo pipefail

PUBLIC_HTML_TARGET="${1:-}"
if [ -z "$PUBLIC_HTML_TARGET" ]; then
  echo "Uso: ./deploy.sh /ruta/a/analytics.intracool.site"
  exit 1
fi

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo "== Backend =="
cd "$ROOT_DIR/backend"
npm install --omit=dev
npm run build
echo "Backend compilado en backend/dist. Reinícialo desde cPanel > Setup Node.js App."

echo "== Frontend =="
cd "$ROOT_DIR/app"
npm install
npm run build

echo "== Publicando frontend en: $PUBLIC_HTML_TARGET =="
mkdir -p "$PUBLIC_HTML_TARGET"
rsync -a --delete --exclude ".htaccess" "$ROOT_DIR/app/dist/" "$PUBLIC_HTML_TARGET/"

if [ ! -f "$PUBLIC_HTML_TARGET/.htaccess" ]; then
  cp "$ROOT_DIR/htaccess.example" "$PUBLIC_HTML_TARGET/.htaccess"
  echo ".htaccess creado a partir de htaccess.example."
else
  echo ".htaccess ya existía — no se modificó."
fi

echo "Listo. Verifica https://analytics.intracool.site y https://analytics.intracool.site/api/health"
