#!/usr/bin/env bash
set -euo pipefail

# Deploy script de referencia para Next.js standalone + PM2.
# Uso:
#   ./deploy.sh
# Variables opcionales:
#   APP_DIR=/home/parfumsfactories/www/app.parfums.factories.cl
#   APP_NAME=parfums-fe
#   PORT=4000

APP_DIR="${APP_DIR:-/home/parfumsfactories/www/app.parfums.factories.cl}"
APP_NAME="${APP_NAME:-parfums-fe}"
PORT="${PORT:-4000}"

echo "==> Deployando en: ${APP_DIR}"
cd "${APP_DIR}"

echo "==> Instalando dependencias"
npm install

echo "==> Generando build"
npm run build

echo "==> Preparando artefactos standalone"
mkdir -p .next/standalone/.next

if [ -d ".next/static" ]; then
  rm -rf .next/standalone/.next/static
  cp -a .next/static .next/standalone/.next/static
else
  echo "ERROR: No existe .next/static. Build incompleto."
  exit 1
fi

if [ -d "public" ]; then
  rm -rf .next/standalone/public
  cp -a public .next/standalone/public
else
  mkdir -p .next/standalone/public
fi

echo "==> Reiniciando PM2 (${APP_NAME})"
if pm2 describe "${APP_NAME}" >/dev/null 2>&1; then
  pm2 restart "${APP_NAME}" --update-env
else
  pm2 start "PORT=${PORT} NODE_ENV=production node .next/standalone/server.js" --name "${APP_NAME}"
fi

pm2 save

echo "==> Verificación rápida"
curl -I "http://127.0.0.1:${PORT}/login" || true
pm2 ls
echo "==> Deploy finalizado."
