#!/usr/bin/env bash # Vérifie le contrat du Makefile décrit dans CLAUDE.md : # toutes les commandes obligatoires existent et apparaissent dans `make help`, # et `make clean` supprime le dossier de build et peut être relancé sans erreur. set -euo pipefail cd "$(dirname "$0")/.." # Lancé depuis `make test` : repartir d'un make indépendant du make parent. unset MAKEFLAGS MFLAGS MAKELEVEL aide="$(make help)" for cible in setup build test lint deploy clean help; do if ! grep -qE "^ make $cible " <<<"$aide"; then echo "make help ne mentionne pas « $cible »" exit 1 fi done # make clean est essayé sur un dossier de build jetable : vider le vrai build/ # forcerait à recompiler le moteur et à régénérer ses données à chaque test. faux_build="$(mktemp -d)" touch "$faux_build/artefact" make clean BUILD_DIR="$faux_build" >/dev/null make clean BUILD_DIR="$faux_build" >/dev/null [ ! -e "$faux_build" ] || { echo "make clean n'a pas supprimé le dossier de build"; exit 1; } grep -qx 'BUILD_DIR := build' Makefile || { echo "BUILD_DIR ne vaut plus build"; exit 1; }