# Makefile d'Ustagammon : toutes les opérations du projet passent par ici. # Chaque cible documentée par « ## » apparaît dans `make help`. SHELL := /bin/bash .DEFAULT_GOAL := help # Machine de développement modeste : jamais plus de deux tâches en parallèle. MAKEFLAGS += -j2 --no-print-directory BUILD_DIR := build # Outils lancés dans Docker (aucune installation sur le PC). SHELLCHECK_IMAGE := koalaman/shellcheck-alpine:v0.10.0 # Image construite ici : changer le numéro à chaque modification de docker/gherkin/. GHERKIN_IMAGE := ustagammon/gherkin:2 # GNU Backgammon de référence, compilé au commit figé par l'ADR 0005. REFERENCE_IMAGE := ustagammon/gnubg-reference:14b6798 export SHELLCHECK_IMAGE GHERKIN_IMAGE .PHONY: help setup build test lint deploy clean reference-image reference help: ## Liste les commandes disponibles @echo "Ustagammon : commandes disponibles" @grep -E '^[a-zA-Z0-9_-]+:.*## ' $(MAKEFILE_LIST) \ | awk 'BEGIN { FS = ":.*## " } { printf " make %-16s %s\n", $$1, $$2 }' setup: ## Installe la chaîne d'outils (images Docker) ; sans effet si déjà fait @command -v docker >/dev/null || { echo "Docker est requis : sudo apt install docker.io"; exit 1; } @docker image inspect $(SHELLCHECK_IMAGE) >/dev/null 2>&1 \ || docker pull $(SHELLCHECK_IMAGE) @docker image inspect $(GHERKIN_IMAGE) >/dev/null 2>&1 \ || docker build -q -t $(GHERKIN_IMAGE) docker/gherkin @$(MAKE) reference-image @echo "Chaîne d'outils prête." build: ## Compile le moteur (si nécessaire) puis l'application @echo "Rien à compiler pour l'instant : le moteur arrive à l'étape 0a." test: ## Lance tous les tests @tests/run.sh lint: ## Vérifie le style et les erreurs courantes @tests/lint.sh deploy: ## Installe l'application sur le téléphone (pas encore disponible) @echo "Pas encore disponible : le socle (PWA ou Android) sera choisi à la fin de l'étape 0." @exit 1 clean: ## Supprime les artefacts de build (garde les images Docker) rm -rf $(BUILD_DIR) reference-image: ## Construit l'image Docker du gnubg de référence (cache Docker : rapide si à jour) docker build -t $(REFERENCE_IMAGE) docker/gnubg-reference @echo "Image $(REFERENCE_IMAGE) prête." reference: reference-image ## Régénère tests/reference/results/ avec le gnubg de référence rm -rf tests/reference/results docker run --rm --user "$$(id -u):$$(id -g)" -e HOME=/tmp \ -v "$(CURDIR)/tests/reference:/reference" $(REFERENCE_IMAGE) \ gnubg --tty --quiet --no-rc --python=/reference/generate.py