#!/usr/bin/env bash
# Publie la feuille de suivi de recette (et le cahier rendu) vers la page que
# consultent les testeurs :
#   https://staging.efektiv-academie-dev.com/_recette/recette-0ts4w5xbdmin4v/
#
# RÈGLE (née de l'incident du 20→23/08) : on publie UNIQUEMENT ce qui est
# commité. La page a été tenue à jour directement sur le serveur pendant quatre
# jours sans commit ; la session qui savait publier s'est close et la source du
# dépôt avait quatre jours de retard. Ce script REFUSE une source non commitée.
#
# Le dossier _recette/ côté serveur :
#   - est EXCLU du déploiement front (--exclude=/_recette/ dans les deux rsync
#     de deploy-staging.yml du dépôt FRONT) — ne pas retirer cette exclusion ;
#   - porte un .htaccess « RewriteEngine Off » qui n'est PAS dans le dépôt :
#     ne jamais l'écraser ni le supprimer, sans lui l'application React capture
#     ces adresses ;
#   - appartient à www-data, d'où le passage par /tmp du serveur + sudo.

set -euo pipefail

HOST="ubuntu@57.129.1.122"
DEST="/var/www/staging.efektiv-academie-dev.com/_recette/recette-0ts4w5xbdmin4v"
URL="https://staging.efektiv-academie-dev.com/_recette/recette-0ts4w5xbdmin4v/"
DIR="$(cd "$(dirname "$0")" && pwd)"

if ! git -C "$DIR" diff --quiet -- tableau-de-bord.html cahier.html; then
  echo "REFUS : docs/recette/tableau-de-bord.html ou cahier.html a des modifications non commitées." >&2
  echo "Committer d'abord — la page publiée doit toujours être retrouvable au dépôt." >&2
  exit 1
fi

STAMP="recette-publish-$(date +%Y%m%d-%H%M%S)"
scp -q "$DIR/tableau-de-bord.html" "$HOST:/tmp/$STAMP-index.html"
scp -q "$DIR/cahier.html"          "$HOST:/tmp/$STAMP-cahier.html"
ssh "$HOST" "sudo install -o www-data -g www-data -m 644 /tmp/$STAMP-index.html  $DEST/index.html \
          && sudo install -o www-data -g www-data -m 644 /tmp/$STAMP-cahier.html $DEST/cahier.html \
          && rm -f /tmp/$STAMP-index.html /tmp/$STAMP-cahier.html"

echo "Publié. Relecture de contrôle :"
curl -s "$URL" | grep -o 'Dernière mise à jour : <strong>[^<]*' \
  || { echo "ÉCHEC : la page publiée ne se relit pas." >&2; exit 1; }
