#!/usr/bin/env bash
#
# OVH deploy script — runs ON the OVH server (over SSH).
#
# Convention : le PROJET est le dossier ~/www (racine OVH), le docroot Drupal est ~/www/web.
# Aucun symlink ; le docroot des domaines est réglé dans le panel OVH (Multisite).
#
# First-time install :
#   ssh user@ssh.clusterXXX.hosting.ovh.net
#   cd ~ && rm -rf www && git clone git@github.com:YomGraphicDesign/lecture-en-tete.git www
#   cp www/web/sites/default/settings.ovh.php.example www/web/sites/default/settings.php
#   nano www/web/sites/default/settings.php   # DB credentials + hash_salt + trusted hosts
#   chmod 444 www/web/sites/default/settings.php
#   bash www/deploy.sh --first-run
#   # Panel OVH → Multisite : docroot des domaines → "www/web", portail → "www/portail"
#
# Subsequent deploys (automatic via GitHub Actions, ou manuel) :
#   ssh user@ssh.clusterXXX.hosting.ovh.net 'cd ~/www && bash deploy.sh'

set -euo pipefail

# Résout le dossier réel du projet même si lancé via un symlink (~/deploy.sh).
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
  DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
  SOURCE="$(readlink "$SOURCE")"
  [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
done
PROJECT_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
cd "$PROJECT_DIR"

FIRST_RUN="${1:-}"

echo "==> [1/6] git pull origin main"
git pull --ff-only origin main

echo "==> [2/6] composer install (no dev, optimized)"
if [[ -f "$HOME/composer.phar" ]]; then
  php "$HOME/composer.phar" install --no-dev --optimize-autoloader --no-interaction
else
  php composer.phar install --no-dev --optimize-autoloader --no-interaction
fi

if [[ "$FIRST_RUN" == "--first-run" ]]; then
  echo "==> First run: vérifie settings.php"
  if [[ ! -f web/sites/default/settings.php ]]; then
    echo "ERREUR: web/sites/default/settings.php absent."
    echo "Copier settings.ovh.php.example vers settings.php et remplir les identifiants DB, puis relancer."
    exit 1
  fi
  echo "==> First run: dossier files inscriptible"
  mkdir -p web/sites/default/files
  chmod 755 web/sites/default/files
  echo "==> First run: dossier privé hors docroot"
  mkdir -p ../private
fi

echo "==> [3/6] permissions libraries"
find web/libraries -type d -exec chmod 755 {} \; 2>/dev/null || true
find web/libraries -type f -exec chmod 644 {} \; 2>/dev/null || true

echo "==> [4/6] drush updb (mises à jour de base de données)"
vendor/bin/drush updb -y

echo "==> [5/6] drush cim (import config depuis config/sync)"
# Décommenter pour appliquer la config (blocs, thème par domaine, breadcrumb…).
# ⚠️ N'activer que si la base de prod est déjà alignée avec la migration
#    (sinon faire d'abord un import complet de la base — voir DEPLOY.md).
# vendor/bin/drush cim -y || true

echo "==> [6/6] drush cr (reconstruction des caches)"
vendor/bin/drush cr

echo
echo "✓ Déploiement terminé."
