Portail Internet pour les Activités Familiales
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.

108 lines
3.2KB

  1. # -*- mode: makefile-gmake -*-
  2. ## Définition des variables
  3. # Le nom de l'exécutable Python à utiliser ou son chemin absolu
  4. # (ex. : python ou python3).
  5. PYTHON_EXE := python3
  6. # S'il faut utiliser un environnement virtuel (yes ou no).
  7. USE_VENV := yes
  8. # Configuration de l'environnement virtuel.
  9. VENV_DIR := venv
  10. VENV_OPT := --system-site-packages
  11. # Définis les chemins et options des exécutables.
  12. PYTHON_EXE_BASENAME := $(shell basename $(PYTHON_EXE))
  13. VENV_PYTHON := --python=$(PYTHON_EXE_BASENAME)
  14. ifeq ($(USE_VENV), yes)
  15. PYTHON := $(VENV_DIR)/bin/$(PYTHON_EXE_BASENAME)
  16. PIP := $(VENV_DIR)/bin/pip
  17. else
  18. PYTHON := $(shell which $(PYTHON_EXE))
  19. PIP := $(shell which pip)
  20. endif
  21. # Charge la configuration du 'config.env' s'il existe
  22. ifneq ("$(wildcard config.env)", "")
  23. include config.env
  24. endif
  25. # ... et définis l'environnement à utiliser.
  26. ifdef DJANGO_SETTINGS_MODULE
  27. ENV = $(shell echo $(DJANGO_SETTINGS_MODULE) | cut -d. -f3)
  28. else
  29. ENV = production
  30. endif
  31. # Définition des cibles -------------------------------------------------------
  32. .PHONY: clean-pyc clean-build clear-venv help
  33. .DEFAULT_GOAL := help
  34. # commentaire d'une cible : #-> interne ##-> aide production+dev ###-> aide dev
  35. help: ## affiche cette aide
  36. ifeq ($(ENV), production)
  37. @perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
  38. else
  39. @perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?###? .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?###? "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
  40. endif
  41. clean: clean-build clean-pyc ## nettoie tous les fichiers temporaires
  42. clean-build: ### nettoie les fichiers de construction du paquet
  43. rm -rf build/
  44. rm -rf dist/
  45. rm -rf *.egg-info
  46. clean-pyc: ### nettoie les fichiers temporaires python
  47. find . -name '*.pyc' -exec rm -f {} +
  48. find . -name '*.pyo' -exec rm -f {} +
  49. find . -name '*~' -exec rm -f {} +
  50. init: create-venv config.env update ## initialise l'environnement et l'application
  51. config.env: # TODO: lancer une commande interactive
  52. cp config.env.example config.env
  53. update: install-deps migrate static check ## mets à jour l'application et ses dépendances
  54. touch piaf/wsgi.py
  55. install-deps: ## installe les dépendances de l'application
  56. $(PIP) install -r requirements/$(ENV).txt
  57. migrate: ## mets à jour le schéma de la base de données
  58. $(PYTHON) manage.py migrate
  59. static: ## collecte les fichiers statiques
  60. ifeq ($(ENV), production)
  61. @echo "Collecte des fichiers statiques..."
  62. $(PYTHON) manage.py collectstatic --no-input --verbosity 0
  63. endif
  64. check: ### vérifie la santé du projet
  65. $(PYTHON) manage.py check
  66. ## Cibles liées à l'environnement virtuel
  67. create-venv: $(PYTHON)
  68. $(PYTHON):
  69. ifeq ($(USE_VENV), yes)
  70. virtualenv $(VENV_OPT) $(VENV_PYTHON) $(VENV_DIR)
  71. else
  72. @echo "\033[31mErreur !\033[0m Impossible de trouver l'exécutable Python $(PYTHON)"
  73. @exit 1
  74. endif
  75. clear-venv: ## supprime l'environnement virtuel
  76. -rm -rf $(VENV_DIR)
  77. ## Cibles pour le développement
  78. test: ### lance les tests de l'application
  79. DJANGO_SETTINGS_MODULE="piaf.settings.test" \
  80. $(PYTHON) manage.py test --failfast
  81. serve: ### démarre un serveur local pour l'application
  82. $(PYTHON) manage.py runserver
  83. lint: ### vérifie la syntaxe et le code python
  84. flake8 piaf