Il y a de très nombreuses façon de le faire (voir plus bas).
J’apprécie la version Python qui, même si elle est plus verbeuse,
a l’avantage d’être compréhensible avec mes connaissances actuelles.
.DEFAULT_GOAL:=help.PHONY:installinstall:## Install the dependencies. (1)python-mpipinstall-rrequirements.txt
playwrightinstall
.PHONY:serveserve:## Launch a local server to serve the `public` folder. (2)@python3-mhttp.server8000--bind127.0.0.1--directorypublic
.PHONY:testtest:## Launch all tests. (3)@pytest
.PHONY:helphelp:@python-c"$$PRINT_HELP_PYSCRIPT"<$(MAKEFILE_LIST)# (4)define PRINT_HELP_PYSCRIPT # start of Python sectionimportre,sysoutput=[]# Loop through the lines in this filefor line in sys.stdin: # if the line has a command and a comment start with # two pound signs, add it to the outputmatch=re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$',line) if match:target,help=match.groups()output.append("\033[36m%-10s\033[0m %s"%(target,help))# Sort the output in alphanumeric orderoutput.sort()# Print the help resultprint('\n'.join(output))endefexport PRINT_HELP_PYSCRIPT# End of python section
On documente les commandes directement dans le Makefile
On documente les commandes directement dans le Makefile
On documente les commandes directement dans le Makefile
Il n’est pas toujours évident d’activer l’environnement virtuel Python avant le lancement d’une commande make, surtout pour des néophytes et/ou n’évoluant pas dans cet environnement (haha).
Bastian Venthur propose une version qui permet de préfixer chaque commande pour éviter d’avoir à activer le venv :
# system python interpreter. used only to create virtual environmentPY=python3
VENV=venv
BIN=$(VENV)/bin
# make it work on windows tooifeq ($(OS), Windows_NT)BIN=$(VENV)/Scripts
PY=python
endifall:linttest$(VENV):requirements.txtrequirements-dev.txtsetup.py$(PY)-mvenv$(VENV)$(BIN)/pipinstall--upgrade-rrequirements.txt
$(BIN)/pipinstall--upgrade-rrequirements-dev.txt
$(BIN)/pipinstall-e.
touch$(VENV).PHONY:testtest:$(VENV)$(BIN)/pytest
.PHONY:lintlint:$(VENV)$(BIN)/flake8
.PHONY:releaserelease:$(VENV)$(BIN)/pythonsetup.pysdistbdist_wheelupload
clean:rm-rf$(VENV)find.-typef-name*.pyc-delete
find.-typed-name__pycache__-delete
On s’assure ici avant chaque lancement de commande que l’environnement virtuel Python est créé et à jour.
Puis, on préfixe chaque utilisation des binaires du projet par le chemin du virtualenv dans lequel il est contenu.
Voir aussi cet article de Mathieu Leplatre à ce sujet, dont je retiens d’ailleurs l’excellente idée d’afficher un message d’erreur si Python n’est pas trouvé :
VENV:=venv# (1)!PY3:=$(shellcommand-vpython32>/dev/null)PYTHON:=$(VENV)/bin/python
$(PYTHON):@if[-z$(PY3)];thenecho"Python 3 could not be found.";exit2;fi$(PY3)-mvenv$(VENV)
Il est tout à fait possible d’adapter le chemin où vous avez l’habitude de stocker vos environnements virtuels.