#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────────────
# PERMANENCE PARTENAIRE — Déploiement OVH mutualisé (baumberger.me)
# Usage : bash deploy-ovh.sh
# Prérequis : accès SSH `ovh` (~/.ssh/config → baumberg-ssh@ssh.cluster110).
#
# Structure prod :
#   • App Laravel      = ~/permanence-partenaire-laravel   (code, vendor, .env, storage)
#   • Docroot servi    = ~/PermanencePart                  (dossier PUBLIC séparé, index.php
#                                                            patché → ../permanence-partenaire-laravel)
#   ⚠️ PermanencePart n'est PAS un lien vers app/public (inodes différents) → les assets
#      front (build/, img/) doivent être synchronisés vers LES DEUX emplacements.
#   ⚠️ Apex/www = édition standard, plus. = édition Plus (même docroot, SetEdition sur le host).
#   ⚠️ JAMAIS config:cache/route:cache sur le mutualisé (chemin home multi-nœud → 500) : optimize:clear seul.
# ─────────────────────────────────────────────────────────────────────────────
set -euo pipefail

OVH="ovh"
APP="permanence-partenaire-laravel"
WEB="PermanencePart"
LOCAL="$(cd "$(dirname "$0")"; pwd)"
cd "$LOCAL"

echo "▶ 1/5 Build des assets Vite..."
npm run build
rm -f public/hot   # jamais de 'hot' en prod (sinon @vite pointe le dev server → site sans style)

echo "▶ 2/5 Envoi du code de l'app (hors .env / storage / vendor / DB)..."
rsync -az \
    --exclude='.git' --exclude='node_modules' \
    --exclude='.env' --exclude='.env.*' \
    --exclude='vendor' --exclude='storage' \
    --exclude='bootstrap/cache' \
    --exclude='deploy-ovh.sh' --exclude='.DS_Store' --exclude='public/hot' \
    -e ssh ./ "$OVH:$APP/"

echo "▶ 3/5 Assets front → app/public ET webroot (inodes différents)..."
rsync -az -e ssh public/build/ "$OVH:$APP/public/build/"
rsync -az -e ssh public/build/ "$OVH:$WEB/build/"
rsync -az -e ssh public/img/   "$OVH:$APP/public/img/"
rsync -az -e ssh public/img/   "$OVH:$WEB/img/"

echo "▶ 4/5 Régénération du manifeste paquets + vidage des caches serveur..."
# package:discover regénère bootstrap/cache/{packages,services}.php côté serveur
# (le manifeste LOCAL contient des deps dev type Laravel\Pail absentes de la prod → 500).
ssh "$OVH" "cd $APP && rm -f bootstrap/cache/packages.php bootstrap/cache/services.php && php artisan package:discover && php artisan optimize:clear"

echo "▶ 5/5 ✅ Déploiement terminé."
echo "   Vérifier : https://www.permanence-partenaire.fr  et  https://plus.permanence-partenaire.fr"
