#!/usr/bin/env bash
set -euo pipefail

# Server-side deploy script (Bedrock). Run from the site root on the server.
# Assets are built and committed locally, so no npm step runs here.
# PHP_BIN points to the 8.2 binary explicitly: OVH only exposes it via an
# interactive-shell alias, so a non-interactive deploy must use the full path.

BRANCH="${1:-main}"
PHP_BIN="${PHP_BIN:-/usr/local/php8.2/bin/php}"

if [ -f "$HOME/composer.phar" ]; then
  COMPOSER="$PHP_BIN $HOME/composer.phar"
elif [ -f composer.phar ]; then
  COMPOSER="$PHP_BIN composer.phar"
elif command -v composer >/dev/null 2>&1; then
  COMPOSER="composer"
else
  echo "ERREUR: composer introuvable (ni ~/composer.phar, ni ./composer.phar, ni composer global)" >&2
  exit 1
fi

echo "==> PHP: $($PHP_BIN -v | head -1)"
echo "==> Using: $COMPOSER"

echo "==> Pulling $BRANCH"
git fetch --prune origin
git reset --hard "origin/$BRANCH"

echo "==> Composer install (root)"
$COMPOSER install --no-dev --no-interaction --prefer-dist --optimize-autoloader

for manifest in web/app/themes/*/composer.json; do
  [ -f "$manifest" ] || continue
  theme_dir="$(dirname "$manifest")"
  echo "==> Composer install ($theme_dir)"
  # --no-scripts : le post-autoload-dump d'Acorn (package discovery) plante pendant
  # composer sur ce serveur (WP non chargé) ; Acorn régénère son manifest au runtime.
  $COMPOSER install --no-dev --no-interaction --prefer-dist --optimize-autoloader --no-scripts --working-dir="$theme_dir"
done

echo "==> Clearing caches (best-effort)"
if command -v wp >/dev/null 2>&1; then
  wp acorn optimize:clear || true
  wp cache flush || true
else
  for fw in web/app/themes/*/storage/framework; do
    [ -d "$fw" ] || continue
    rm -rf "$fw"/cache/* "$fw"/views/* "$fw"/sessions/* 2>/dev/null || true
  done
fi

echo "==> Deploy complete"
