#!/bin/sh
#
# Porte de qualité locale — c'est ICI que la CI de ce projet se joue.
#
# Le déploiement Coolify se déclenche sur webhook à chaque push : rien ne
# s'interpose entre `git push` et la mise en ligne. Ce hook est donc le dernier
# filet avant que du code cassé parte en dev.
#
# Installation (une fois par clone) :   npm run hooks:install
# Contournement ponctuel :              git push --no-verify
#
set -e

echo "▶ pre-push : porte de qualité + parcours e2e (~30 s)…"

start=$(date +%s)

# `check` d'abord (6 s) : la majorité des régressions y tombent, autant échouer
# vite. Les parcours Playwright (~22 s) ensuite, seulement si le reste est vert.
if ! npm run --silent check; then
  cat >&2 <<'MSG'

✗ La porte de qualité a échoué — push interrompu.

  Corriger, ou pousser quand même en connaissance de cause :
      git push --no-verify

  Correction automatique de la plupart des problèmes de style :
      npm run lint:fix && npm run lint:py:fix
MSG
  exit 1
fi

if ! npm run --silent test:e2e; then
  cat >&2 <<'MSG'

✗ Les parcours e2e ont échoué — push interrompu.

  Rejouer en mode interactif pour comprendre :
      npm run test:e2e:ui

  Sur un clone neuf, récupérer d'abord le navigateur :
      npm run test:e2e:install
MSG
  exit 1
fi

echo "✓ pre-push : tout est vert ($(( $(date +%s) - start ))s)"
