#!/usr/bin/env bash
# Déploiement du site Highland Games Studio / Emberwild sur le serveur Hetzner.
#
# Usage (depuis la racine du projet, dans Git Bash) :
#   ./deploy.sh
#
# Ce que ça fait : archive le code (sans node_modules/.next/.git), l'envoie sur
# le serveur, installe les dépendances, build en prod et redémarre PM2.
set -euo pipefail

# --- Config serveur ---
SERVER="root@167.233.134.148"
KEY="$HOME/.ssh/id_rsa"
REMOTE_DIR="/var/www/highland"
APP_NAME="highland"
# Archive créée HORS du projet (sinon tar voit le dossier changer pendant la lecture).
TAR="${TMPDIR:-/tmp}/highland-deploy-$$.tar.gz"

cd "$(dirname "$0")"

echo "==> 1/3  Archive du projet..."
tar --exclude='./node_modules' --exclude='./.next' --exclude='./.git' \
    --exclude='./tsconfig.tsbuildinfo' \
    -czf "$TAR" .

echo "==> 2/3  Envoi vers le serveur ($SERVER)..."
scp -i "$KEY" -o BatchMode=yes "$TAR" "$SERVER:/tmp/site.tar.gz"

echo "==> 3/3  Extraction + build + redémarrage..."
ssh -i "$KEY" -o BatchMode=yes "$SERVER" \
    "REMOTE_DIR='$REMOTE_DIR' APP_NAME='$APP_NAME' bash -s" <<'REMOTE'
set -e
mkdir -p "$REMOTE_DIR"
tar -xzf /tmp/site.tar.gz -C "$REMOTE_DIR"
cd "$REMOTE_DIR"
npm ci
npm run build
pm2 restart "$APP_NAME" --update-env || pm2 start npm --name "$APP_NAME" -- start
pm2 save
rm -f /tmp/site.tar.gz
REMOTE

rm -f "$TAR"
echo ""
echo "==> ✅ Déployé ! → https://highlandgamesstudio.com"
