#!/bin/bash
# ============================================================
# Frontend Nuxt - Restart rapide (staging)
# Usage: ./restart.sh [--rebuild]
#   Sans argument : redémarre Node avec le build existant
#   --rebuild     : npm ci + build + restart
# ============================================================

set -e

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"

LOG_DIR="$SCRIPT_DIR/logs"
PID_FILE="$LOG_DIR/node.pid"
LOG_FILE="$LOG_DIR/frontend.log"
PORT=3000

mkdir -p "$LOG_DIR"

echo "=========================================="
echo "  Frontend Nuxt - Restart"
echo "=========================================="

# ---- 1. Arreter Node (PID file + fallback port) ----
echo "[1/4] Arret du serveur Node..."

if [ -f "$PID_FILE" ]; then
    OLD_PID=$(cat "$PID_FILE" 2>/dev/null)
    if [ -n "$OLD_PID" ] && kill -0 "$OLD_PID" 2>/dev/null; then
        echo "  Arret PID $OLD_PID (depuis pidfile)..."
        kill "$OLD_PID" 2>/dev/null
        sleep 2
        kill -9 "$OLD_PID" 2>/dev/null || true
    fi
    rm -f "$PID_FILE"
fi

# Fallback: tuer tout process sur le port (evite EADDRINUSE)
STALE_PID=$(lsof -ti :$PORT 2>/dev/null || true)
if [ -n "$STALE_PID" ]; then
    echo "  Process orphelin sur port $PORT (PID $STALE_PID), arret..."
    kill $STALE_PID 2>/dev/null; sleep 2
    kill -9 $STALE_PID 2>/dev/null || true
fi

echo "  OK - port $PORT libre"

# ---- 2. Rebuild si demande ----
if [ "$1" = "--rebuild" ]; then
    echo "[2/4] Installation des dependances..."
    npm ci

    echo "[3/4] Build Nuxt..."
    npm run build

    if [ ! -d ".output" ]; then
        echo "ERREUR: Le build n'a pas produit .output/"
        exit 1
    fi
    chmod -R 755 .output/
else
    echo "[2/4] Skip install (pas de --rebuild)"
    echo "[3/4] Skip build (pas de --rebuild)"

    if [ ! -d ".output" ]; then
        echo "ERREUR: .output/ n'existe pas. Lancez avec --rebuild"
        exit 1
    fi
fi

# ---- 4. Demarrer Node ----
echo "[4/4] Demarrage du serveur Node (port $PORT)..."
nohup node .output/server/index.mjs >> "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
disown

sleep 2

# Verifier
if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
    echo ""
    echo "=========================================="
    echo "  OK - Frontend demarre"
    echo "  PID:  $(cat $PID_FILE)"
    echo "  Port: $PORT"
    echo "  Log:  $LOG_FILE"
    echo "=========================================="
else
    echo "ERREUR: Node n'a pas demarre. Voir $LOG_FILE"
    exit 1
fi
