#!/usr/bin/env bash
# Déploiement API Symfony → dossier api-26 sur OVH (rsync)
#
# Prérequis :
#   - Accès SSH (alias ovh_ssh ou DEPLOY_SSH)
#   - composer install --no-dev exécuté en local (vendor/ non installable sur mutualisé)
#
# Usage :
#   ./scripts/deploy-api26.sh              # sync
#   ./scripts/deploy-api26.sh --dry-run    # simulation
#   DEPLOY_SSH=ovh_ssh DEPLOY_PATH=~/api-26 ./scripts/deploy-api26.sh
#
# Après le rsync, en SSH sur le serveur :
#   cd ~/api-26
#   php bin/console doctrine:migrations:migrate --no-interaction --env=prod
#   php bin/console cache:clear --env=prod --no-debug

set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

DEPLOY_SSH="${DEPLOY_SSH:-ovh_ssh}"
DEPLOY_PATH="${DEPLOY_PATH:-api-26}"
EXCLUDE_FILE="$ROOT/scripts/deploy-api26-exclude.txt"

DRY_RUN=""
if [[ "${1:-}" == "--dry-run" ]]; then
  DRY_RUN="--dry-run"
  echo ">>> Mode simulation (aucune modification sur le serveur)"
fi

if [[ ! -f "$EXCLUDE_FILE" ]]; then
  echo "Fichier d'exclusions introuvable : $EXCLUDE_FILE" >&2
  exit 1
fi

if [[ ! -f composer.lock ]]; then
  echo "composer.lock introuvable à la racine du projet." >&2
  exit 1
fi

echo ">>> composer install --no-dev --optimize-autoloader (local, cible prod PHP 8.2)"
composer install --no-dev --optimize-autoloader --no-interaction --no-scripts --ignore-platform-req=php

REMOTE="${DEPLOY_SSH}:${DEPLOY_PATH%/}/"

echo ">>> rsync vers ${REMOTE}"
rsync -avz --delete \
  $DRY_RUN \
  --exclude-from="$EXCLUDE_FILE" \
  "$ROOT/" \
  "$REMOTE"

echo ""
echo ">>> Terminé."
if [[ -z "$DRY_RUN" ]]; then
  echo "Pense à exécuter sur le serveur :"
  echo "  ssh ${DEPLOY_SSH}"
  echo "  cd ${DEPLOY_PATH}"
  echo "  php bin/console doctrine:migrations:migrate --no-interaction --env=prod"
  echo "  php bin/console cache:clear --env=prod --no-debug"
  echo ""
  echo "Vérifier ~/api-26/.env (non écrasé par rsync) :"
  echo "  APP_ENV=prod"
  echo "  APP_DEBUG=0"
  echo "  INDEXNOW_ENABLED=false"
  echo "  MATCH_RECALC_ON_TERMINATE_ENABLED=false"
  echo ""
  echo "Fichiers ajoutés côté API : public/robots.txt (Disallow: /), règles .htaccess anti-scan vendor/var/"
fi
