#!/bin/sh
# Garde-fou pré-push : refuse de pousser si les tests de domaine, les tests crypto
# ou le build échouent. C'est le seul rempart automatique quand aucun runner CI
# n'est disponible (fondateur solo qui déploie depuis sa machine).
#
# Activation (une seule fois) :  git config core.hooksPath hooks
# Contournement d'urgence (à éviter) :  git push --no-verify
#
# MÉMOÏSATION (10.07.2026) : origin a DEUX URLs de push (Forgejo + miroir VPS) → le hook
# tournait deux fois par `git push`, et un test occasionnellement instable sous contention
# bloquait le MIROIR d'un code déjà vérifié vert 30 s plus tôt (désynchronisation silencieuse
# des remotes). Un marqueur porte le HEAD vérifié : même commit déjà vert + arbre propre →
# pas de re-run. Tout nouveau commit invalide naturellement le marqueur.
set -e

MARQUEUR=".git/verify-vert"
HEAD_SHA=$(git rev-parse HEAD)
if [ -f "$MARQUEUR" ] && [ -z "$(git status --porcelain)" ] && [ "$(cat "$MARQUEUR")" = "$HEAD_SHA" ]; then
  echo "✓ pré-push : commit déjà vérifié vert (${HEAD_SHA}) — push autorisé."
  exit 0
fi

echo "→ pré-push : vérification (tests domaine + crypto + build)…"
npm run verify
printf '%s' "$HEAD_SHA" > "$MARQUEUR"
echo "✓ pré-push : tout est vert, push autorisé."
