#!/bin/bash
# =============================================================
# SCRIPT DE DÉPLOIEMENT APP — À exécuter à chaque mise à jour
# Usage : bash deploy-app.sh [--first-deploy]
# =============================================================

set -e
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
log()  { echo -e "${GREEN}[✓]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }

APP_DIR="/var/www/amendes-football"
GIT_REPO="git@github.com:VOTRE_ORG/amendes-football.git"   # ← À MODIFIER
FIRST_DEPLOY=false
[[ "$1" == "--first-deploy" ]] && FIRST_DEPLOY=true

cd "$APP_DIR"

# ── 1. Récupération du code ──────────────────────────────────
if $FIRST_DEPLOY; then
    log "Premier déploiement — clone du dépôt Git..."
    git clone "$GIT_REPO" .
else
    log "Mise à jour du code (git pull)..."
    git pull origin main
fi

# ── 2. Mode maintenance Symfony ──────────────────────────────
log "Activation du mode maintenance..."
php bin/console down --env=prod 2>/dev/null || true

# ── 3. Dépendances Composer ──────────────────────────────────
log "Installation des dépendances PHP..."
composer install --no-dev --optimize-autoloader --no-interaction

# ── 4. Assets frontend ───────────────────────────────────────
log "Compilation des assets..."
npm ci --silent
npm run build

# ── 5. Migrations base de données ───────────────────────────
log "Exécution des migrations..."
php bin/console doctrine:migrations:migrate --no-interaction --env=prod

# ── 6. Cache Symfony ─────────────────────────────────────────
log "Vidage et reconstruction du cache..."
php bin/console cache:clear --env=prod --no-warmup
php bin/console cache:warmup --env=prod

# ── 7. Permissions ───────────────────────────────────────────
log "Réglage des permissions..."
chown -R www-data:www-data var/
chmod -R 755 var/
chmod -R 755 public/

# ── 8. Désactivation mode maintenance ────────────────────────
log "Désactivation du mode maintenance..."
php bin/console up --env=prod 2>/dev/null || true

# ── 9. Rechargement PHP-FPM ──────────────────────────────────
log "Rechargement PHP-FPM..."
systemctl reload php8.3-fpm

log "Déploiement terminé ! Application disponible."

# ── Optionnel : test de santé ─────────────────────────────────
if command -v curl &> /dev/null; then
    STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/)
    if [ "$STATUS" == "200" ] || [ "$STATUS" == "302" ]; then
        log "Test de santé OK (HTTP $STATUS)"
    else
        warn "Test de santé : HTTP $STATUS — vérifiez les logs Nginx"
    fi
fi
