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

PROJECT_ROOT="$(git rev-parse --show-toplevel)/Olhar-PWA"
cd "$PROJECT_ROOT"

echo "🔍 Pre-commit: lancement des tests avec couverture..."

# Déterminer le moteur de conteneur disponible
if command -v docker &>/dev/null; then
  CONTAINER_CMD="docker"
  COMPOSE_CMD="docker compose"
elif command -v podman &>/dev/null; then
  CONTAINER_CMD="podman"
  COMPOSE_CMD="podman-compose"
else
  CONTAINER_CMD=""
fi

if [ -n "$CONTAINER_CMD" ]; then
  echo "📦 Exécution des tests via $CONTAINER_CMD..."
  $COMPOSE_CMD -f docker-compose.test.yml run --rm test
else
  echo "⚠️  Docker/Podman non disponible — exécution locale des tests..."
  if [ ! -d "node_modules" ]; then
    echo "📥 Installation des dépendances..."
    npm ci
  fi
  npm run test:coverage
fi

EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
  echo ""
  echo "❌ Tests échoués ou couverture insuffisante (<90%)."
  echo "   Le commit est annulé. Corrigez les erreurs avant de committer."
  exit 1
fi

echo "✅ Tests OK — couverture ≥ 90%. Commit autorisé."
exit 0
