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.