#!/bin/bash
# ============================================================
# Frontend Nuxt - Deploy staging (auto-suffisant)
# Copie et execute par le pipeline Bitbucket
# ============================================================
set -e

DEPLOY_ROOT="/home/ceterisprime/public_html/app/connect"
SERVICE_DIR="$DEPLOY_ROOT/frontend"
GIT_BRANCH="master"
REPO_SLUG="frontend"

# Git URL (auth via env vars du pipeline)
GIT_URL="https://bitbucket.org/alcyonpartners/$REPO_SLUG.git"
if [ -n "$GIT_USER" ] && [ -n "$GIT_TOKEN" ]; then
    GIT_URL="https://$GIT_USER:$GIT_TOKEN@bitbucket.org/alcyonpartners/$REPO_SLUG.git"
fi

echo "[DEPLOY] ========== Deploiement Frontend Nuxt (staging) =========="

mkdir -p "$SERVICE_DIR"

# Reparer repo git corrompu
if [ -d "$SERVICE_DIR/.git" ] && ! git -C "$SERVICE_DIR" rev-parse --git-dir >/dev/null 2>&1; then
    echo "[WARN] Repo git corrompu, re-clone..."
    rm -rf "$SERVICE_DIR"
    mkdir -p "$SERVICE_DIR"
fi

# Clone ou pull
if [ ! -d "$SERVICE_DIR/.git" ]; then
    echo "[INFO] Premier deploiement: clone..."
    git clone --branch "$GIT_BRANCH" "$GIT_URL" "$SERVICE_DIR"
else
    cd "$SERVICE_DIR"
    [ -n "$GIT_USER" ] && git remote set-url origin "$GIT_URL"
    echo "[INFO] Mise a jour du code..."
    git fetch origin
    git reset --hard "origin/$GIT_BRANCH"
    git remote set-url origin "https://bitbucket.org/alcyonpartners/$REPO_SLUG.git" 2>/dev/null || true
fi

cd "$SERVICE_DIR"

# Arreter le processus Node existant (via PID file, sans sudo)
PIDFILE="$SERVICE_DIR/logs/node.pid"
if [ -f "$PIDFILE" ]; then
    PID=$(cat "$PIDFILE" 2>/dev/null)
    if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
        echo "[INFO] Arret du frontend Node (PID $PID)..."
        kill "$PID" 2>/dev/null
        for i in $(seq 1 10); do kill -0 "$PID" 2>/dev/null || break; sleep 1; done
        kill -9 "$PID" 2>/dev/null || true
    fi
    rm -f "$PIDFILE"
fi

# Installer les dependances
echo "[INFO] Installation Node.js..."
npm ci 2>&1

# Build Nuxt
echo "[INFO] Build Nuxt..."
npm run build 2>&1

# Verifier le build
if [ ! -d ".output" ]; then
    echo "[ERROR] Le build Nuxt n'a pas produit .output/"
    exit 1
fi

# Permissions
chmod -R 755 .output/
chown -R ceterisprime:ceterisprime .output/ 2>/dev/null || true

# Demarrer le serveur Node en daemon (sans sudo)
mkdir -p logs
echo "[INFO] Demarrage frontend Nuxt (port 3000 staging)..."
nohup node .output/server/index.mjs >> logs/frontend.log 2>&1 &
echo $! > logs/node.pid
disown
echo "[INFO] Frontend Nuxt demarre (PID $(cat logs/node.pid))"

# Health check
sleep 5
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:3000" --max-time 15 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "302" ]; then
    echo "[INFO] frontend OK (HTTP $HTTP_CODE)"
else
    echo "[WARN] frontend health check: HTTP $HTTP_CODE"
fi

echo "[DEPLOY] ========== Frontend Nuxt deploye avec succes =========="
