#!/usr/bin/env bash
# TP29 partie 2 : passe le code « proposé par l'IA » dans les MÊMES contrôles que le code humain (TP10, TP13, TP17).
# Usage : ./checks/run-all-checks.sh ai-generated
set -u
TARGET="${1:-ai-generated}"
SRC="$(cd "$TARGET" && pwd)"
FAILED=0

run() {
  local name="$1"; shift
  echo "=== $name"
  if "$@"; then echo "--> $name : OK"; else echo "--> $name : ÉCHEC"; FAILED=$((FAILED + 1)); fi
}

run "Secrets (Gitleaks)" docker run --rm -v "$SRC:/src" ghcr.io/gitleaks/gitleaks:latest dir /src --no-banner
run "SAST (Semgrep)" docker run --rm -v "$SRC:/src" semgrep/semgrep semgrep scan --config p/javascript --config p/owasp-top-ten --error --quiet /src
run "Dockerfile + Kubernetes (Trivy config)" docker run --rm -v "$SRC:/src" aquasec/trivy:latest config --exit-code 1 --severity HIGH,CRITICAL /src
run "Terraform (Checkov)" docker run --rm -v "$SRC:/src" bridgecrew/checkov -d /src --framework terraform --quiet --compact

# TODO : vérifier que chaque dépendance de package.json EXISTE sur le registre npm (npm view <nom> name)
#        et échouer sinon (risque de « slopsquatting »)
# TODO : appliquer les policies Kyverno du TP17 au Deployment avec la CLI kyverno (kyverno apply)

echo
echo "Contrôles en échec : $FAILED"
exit "$FAILED"
