#!/usr/bin/env bash
#
# Déploie le mu-plugin covalba-core sur le WordPress du VPS — UNIQUEMENT depuis
# l'état de `origin/main`, jamais une feature branch.
#
# Pourquoi : le mu-plugin existe en double (repo + VPS) et `rsync` écrase TOUJOURS
# la cible. Déployer depuis une branche en retard sur main re-télécharge des
# versions plus anciennes des fichiers qu'elle ne touche pas (incident
# fiche-lieu/heroImage → schéma GraphQL cassé). Ce garde-fou refuse ce cas.
#
# Usage : scripts/wp/deploy-mu-plugins.sh
# Env   : COVALBA_WP_VPS (def root@72.61.87.116), COVALBA_WP_SSH_KEY
#         (def ~/.ssh/covalba_wp_ed25519)
#
set -euo pipefail

REPO_ROOT="$(git rev-parse --show-toplevel)"
VPS="${COVALBA_WP_VPS:-root@72.61.87.116}"
KEY="${COVALBA_WP_SSH_KEY:-$HOME/.ssh/covalba_wp_ed25519}"
SSH="ssh -i $KEY -o StrictHostKeyChecking=accept-new"
REMOTE_MU="/srv/covalba-wp/wp-content/mu-plugins"

cd "$REPO_ROOT"
git fetch origin main --quiet

# Garde-fou : le mu-plugin du working tree doit être IDENTIQUE à origin/main.
if ! git diff --quiet origin/main -- wordpress/mu-plugins; then
  echo "✗ wordpress/mu-plugins/ diffère de origin/main." >&2
  echo "  Déploie le mu-plugin SEULEMENT depuis main à jour (merge d'abord tes" >&2
  echo "  changements). Une feature branch downgrade les fichiers non modifiés." >&2
  echo "" >&2
  git --no-pager diff --stat origin/main -- wordpress/mu-plugins >&2
  exit 1
fi

echo "→ rsync wordpress/mu-plugins/ → ${VPS}:${REMOTE_MU}/ (sans --delete)"
rsync -az -e "$SSH" "$REPO_ROOT/wordpress/mu-plugins/" "${VPS}:${REMOTE_MU}/"

echo "→ flush cache objet (Redis)"
$SSH "$VPS" 'cd /srv/covalba-wp && docker compose run --rm wpcli wp cache flush >/dev/null 2>&1 || true'

echo "→ check schéma GraphQL (sur le VPS, localhost)"
$SSH "$VPS" 'bash -s' < "$REPO_ROOT/scripts/wp/check-graphql-schema.sh"

echo "✓ Déploiement mu-plugin terminé (depuis origin/main)."
