83 lignes
2.4 KiB
Makefile
83 lignes
2.4 KiB
Makefile
## Définition des variables
|
|
# L'environnement à utiliser (production ou development).
|
|
ENV := production
|
|
|
|
# Le nom de l'exécutable Python à utiliser ou son chemin absolu
|
|
# (ex. : python ou python3).
|
|
PYTHON_EXE := python3
|
|
# S'il faut utiliser un environnement virtuel (yes ou no).
|
|
USE_VENV := "yes"
|
|
# Configuration de l'environnement virtuel.
|
|
VENV_DIR := venv
|
|
VENV_OPT := "--system-site-packages"
|
|
|
|
# Définis les chemins et options des exécutables.
|
|
PYTHON_EXE_BASENAME := $(shell basename $(PYTHON_EXE))
|
|
VENV_PYTHON := "--python=$(PYTHON_EXE_BASENAME)"
|
|
ifeq ($(USE_VENV), "yes")
|
|
PYTHON := $(VENV_DIR)/bin/$(PYTHON_EXE_BASENAME)
|
|
PIP := $(VENV_DIR)/bin/pip
|
|
else
|
|
PYTHON := $(shell which $(PYTHON_EXE))
|
|
PIP := $(shell which pip)
|
|
endif
|
|
|
|
# Définition des cibles -------------------------------------------------------
|
|
|
|
.PHONY: clean clean-test clean-pyc clean-build help
|
|
.DEFAULT_GOAL := help
|
|
|
|
help:
|
|
ifeq ($(ENV), production)
|
|
@perl -nle 'print $& if m{^[a-zA-Z_-]+:[^#]*?## .*$$}' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
else
|
|
@perl -nle 'print $& if m{^[a-zA-Z_-]+:[^#]*?###? .*$$}' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?###? "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
endif
|
|
|
|
clean: clean-build clean-pyc clean-test ## nettoie tous les fichiers temporaires
|
|
|
|
clean-build: ### nettoie les fichiers de construction
|
|
rm -fr build/
|
|
rm -fr dist/
|
|
rm -fr .eggs/
|
|
find . -name '*.egg-info' -exec rm -fr {} +
|
|
find . -name '*.egg' -exec rm -f {} +
|
|
|
|
clean-pyc: ### nettoie les fichiers Python
|
|
find . -name '*.pyc' -exec rm -f {} +
|
|
find . -name '*.pyo' -exec rm -f {} +
|
|
find . -name '*~' -exec rm -f {} +
|
|
find . -name '__pycache__' -exec rm -fr {} +
|
|
|
|
clean-test: ### nettoie les fichiers liés aux tests
|
|
rm -fr .tox/
|
|
|
|
install-deps: ## installe les dépendances de l'application
|
|
$(PIP) install -r requirements/$(ENV).txt
|
|
|
|
## Cibles liées à l'environnement virtuel
|
|
|
|
create-venv: $(PYTHON) ## crée l'environnement virtuel
|
|
|
|
$(PYTHON):
|
|
ifeq ($(USE_VENV), "yes")
|
|
virtualenv $(VENV_OPT) $(VENV_PYTHON) $(VENV_DIR)
|
|
else
|
|
@echo "\033[31mErreur !\033[0m Impossible de trouver l'exécutable Python $(PYTHON)"
|
|
@exit 1
|
|
endif
|
|
|
|
clear-venv: ## supprime l'environnement virtuel
|
|
-rm -rf $(VENV_DIR)
|
|
|
|
## Cibles pour le développement
|
|
|
|
lint: ### vérifie la syntaxe du code avec flake8
|
|
flake8 sepatodgfip tests
|
|
|
|
test: ### lance les tests avec pytest
|
|
pytest --verbose tests
|
|
|
|
test-all: ### lance tous les tests avec tox
|
|
tox
|