forked from cliss21/creme_center_fibois
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.6 KiB
152 lines
4.6 KiB
# -*- mode: makefile-gmake -*- |
|
## Définition des variables |
|
# 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 (y ou n). |
|
USE_VENV := y |
|
# 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), y) |
|
PYTHON := $(VENV_DIR)/bin/$(PYTHON_EXE_BASENAME) |
|
PIP := $(VENV_DIR)/bin/pip |
|
else |
|
PYTHON := $(shell which $(PYTHON_EXE)) |
|
PIP := $(shell which pip) |
|
endif |
|
|
|
# Détermine l'environnement à utiliser. |
|
ifndef ENV |
|
ifdef DJANGO_SETTINGS_MODULE |
|
ENV = $(shell echo $(DJANGO_SETTINGS_MODULE) | cut -d. -f3) |
|
else |
|
DEFAULT_ENV := production |
|
ENV = $(shell \ |
|
sed -n '/^ENV/s/[^=]*=\(.*\)/\1/p' config.env 2> /dev/null \ |
|
| tail -n 1 | grep -Ee '^..*' || echo "$(DEFAULT_ENV)") |
|
endif |
|
endif |
|
|
|
# Définis EDITOR pour l'édition interactive. |
|
ifndef EDITOR |
|
ifdef VISUAL |
|
EDITOR := $(VISUAL) |
|
else |
|
EDITOR := vi |
|
endif |
|
endif |
|
|
|
# Définition des cibles ------------------------------------------------------- |
|
|
|
.PHONY: clean-pyc clean-build clean-static clear-venv help check check-config |
|
.DEFAULT_GOAL := help |
|
|
|
# Commentaire d'une cible : #-> interne ##-> aide production+dev ###-> aide dev |
|
help: ## affiche cette aide |
|
ifeq ($(ENV), production) |
|
@perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?## .*$$}' $(MAKEFILE_LIST) \ |
|
| sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' |
|
else |
|
@perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?###? .*$$}' $(MAKEFILE_LIST) \ |
|
| sort | awk 'BEGIN {FS = ":.*?###? "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' |
|
endif |
|
|
|
clean: clean-build clean-pyc clean-static ## nettoie tous les fichiers temporaires |
|
|
|
clean-build: ### nettoie les fichiers de construction du paquet |
|
rm -rf build/ |
|
rm -rf dist/ |
|
rm -rf *.egg-info |
|
|
|
clean-pyc: ### nettoie les fichiers temporaires python |
|
find center_pilote/ \ |
|
\( -name '*.pyc' -o -name '*.pyo' -o -name '*~' \) -exec rm -f {} + |
|
|
|
clean-static: ### nettoie les fichiers "static" collectés |
|
rm -rf var/static |
|
|
|
init: create-venv config.env ## initialise l'environnement et l'application |
|
@$(MAKE) --no-print-directory update |
|
|
|
config.env: |
|
cp config.env.example config.env |
|
chmod go-rwx config.env |
|
$(EDITOR) config.env |
|
|
|
update: check-config install-deps migrate static populate ## mets à jour l'application et ses dépendances |
|
touch center_pilote/wsgi.py |
|
|
|
check: check-config ## vérifie la configuration de l'instance |
|
$(PYTHON) manage.py check |
|
|
|
check-config: |
|
@find . -maxdepth 1 -name config.env -perm /o+rwx -exec false {} + || \ |
|
{ echo "\033[31mErreur :\033[0m les permissions de config.env ne sont pas bonnes, \ |
|
vous devriez au moins faire : chmod o-rwx config.env"; false; } |
|
|
|
install-deps: ## installe les dépendances de l'application |
|
$(PIP) install --upgrade pip setuptools wheel pkg_resources |
|
$(PIP) install --upgrade --requirement requirements/$(ENV).txt |
|
|
|
migrate: ## mets à jour le schéma de la base de données |
|
$(PYTHON) manage.py migrate |
|
|
|
static: ## collecte les fichiers statiques |
|
@echo "Collecte des fichiers statiques..." |
|
$(PYTHON) manage.py generatemedia |
|
|
|
populate: ## peuple la base de donnee |
|
$(PYTHON) manage.py creme_populate |
|
|
|
## Cibles liées à l'environnement virtuel |
|
|
|
create-venv: $(PYTHON) |
|
|
|
$(PYTHON): |
|
ifeq ($(USE_VENV), y) |
|
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 |
|
|
|
serve: ### démarre un serveur local pour l'application |
|
$(PYTHON) manage.py runserver |
|
|
|
test: ### lance les tests de l'application |
|
$(PYTHON) -m pytest --cov --cov-report=term:skip-covered |
|
|
|
test-wip: #### lance les tests marqués 'wip' |
|
$(PYTHON) -m pytest -vv -m 'wip' --pdb |
|
|
|
test-failed: #### lance les tests qui ont échoué |
|
$(PYTHON) -m pytest --lf |
|
|
|
coverage: test ### vérifie la couverture de code |
|
$(PYTHON) -m coverage html |
|
@echo open htmlcov/index.html |
|
|
|
lint: ### vérifie la syntaxe du code Python |
|
@$(PYTHON) -m flake8 center_pilote || \ |
|
{ echo "\033[31mErreur !\033[0m Veuillez corriger la syntaxe avec : make format"; false; } |
|
|
|
format: ### formate le code Python |
|
$(PYTHON) -m isort center_pilote |
|
$(PYTHON) -m black center_pilote |
|
|
|
shell: ### lance un shell Python dans l'environnement |
|
ifeq ($(ENV), production) |
|
$(PYTHON) manage.py shell |
|
else |
|
$(PYTHON) manage.py shell_plus |
|
endif
|
|
|