J’ai découvert just en parcourant des projets Rust lorsque j’ai commencé à apprendre le langage.

just c’est un Makefile sans la syntaxe particulière de Make. Les recettes sont plus lisibles, le langage est pensé pour lancer des commandes (pas pour compiler du C). Et la syntaxe des dépendances est plus intuitive :

# justfile
deploy: build push
    kubectl apply -f deploy/

build:
    docker build -t monapp .

push:
    docker push monapp:latest

Moi qui ai tendance à utiliser pas mal Make pour ce genre de raccourcis (et jamais pour builder du C), ça m’a convaincu pendant 3 mois. Puis j’ai travaillé sur des machines où just n’était pas installé. Et là, Make est toujours installé. Prêt à opérer. Aucun obstacle.

Je suis donc revenu à Make, mais avec une nuance : je fais générer le Makefile par IA. Je décris ce que je veux en langage naturel (“génère un Makefile avec build, test, deploy, et une cible clean”), je récupère le résultat, je vérifie que ça tourne. 30 secondes au lieu de 15 minutes à relire la doc des variables automatiques $< et $@.

Mon Makefile type aujourd’hui, avec une cible help en première position pour que make sans argument liste automatiquement les commandes disponibles :

.DEFAULT_GOAL := help
.PHONY: help build test deploy clean

help:
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\033[36m%-15s\\033[0m %s\\n\", $$1, $$2}'

build: ## Builder l'image Docker
	docker build -t monapp .

test: ## Lancer les tests
	pytest -xvs

deploy: build test ## Déployer sur Kubernetes
	kubectl apply -f deploy/

clean: ## Nettoyer les artefacts
	docker rmi monapp
	rm -rf __pycache__ .pytest_cache

Le piège avec just : on devient dépendant d’un outil qui n’est pas dans les dépôts par défaut de Debian et qui ne parle pas encore à grand monde. Make est installé partout depuis 1977.