Facilite la gestion et la valorisation du bénévolat dans les associations. https://benevalibre.org/
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

168 行
5.3KB

  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 (y ou n).
  7. USE_VENV := y
  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), y)
  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. # Détermine si black est présent.
  22. USE_BLACK := $(shell $(PYTHON) -c 'import black; print("1")' 2>/dev/null)
  23. # Détermine s'il faut charger le fichier de configuration.
  24. ifneq ($(READ_CONFIG_FILE), 0)
  25. READ_CONFIG_FILE := 1
  26. else
  27. READ_CONFIG_FILE := 0
  28. endif
  29. # Détermine l'environnement à utiliser.
  30. DEFAULT_ENV := production
  31. ifndef ENV
  32. ifeq ($(READ_CONFIG_FILE), 1)
  33. # Commence par chercher la dernière valeur de DJANGO_SETTINGS_MODULE,
  34. # puis de ENV s'il n'y en a pas, ou utilise l'environnement par défaut.
  35. ENV = $(shell \
  36. sed -n -e '/^DJANGO_SETTINGS_MODULE/s/[^.]*\.settings\.\([^.]*\)/\1/p' \
  37. -e '/^ENV/s/[^=]*=\(.*\)/\1/p' config.env 2> /dev/null \
  38. | tail -n 1 | grep -Ee '^..*' || echo "$(DEFAULT_ENV)")
  39. else
  40. ifdef DJANGO_SETTINGS_MODULE
  41. ENV = $(shell echo $(DJANGO_SETTINGS_MODULE) | cut -d. -f3)
  42. else
  43. ENV := $(DEFAULT_ENV)
  44. endif # ifdef DJANGO_SETTINGS_MODULE
  45. endif # ifeq READ_CONFIG_FILE
  46. endif # ifndef ENV
  47. # Définis EDITOR pour l'édition interactive.
  48. ifndef EDITOR
  49. ifdef VISUAL
  50. EDITOR := $(VISUAL)
  51. else
  52. EDITOR := vi
  53. endif
  54. endif
  55. # Définition des cibles -------------------------------------------------------
  56. .PHONY: clean-pyc clean-build clear-venv help check check-config docs clean-docs
  57. .DEFAULT_GOAL := help
  58. # Commentaire d'une cible : #-> interne ##-> aide production+dev ###-> aide dev
  59. help: ## affiche cette aide
  60. ifeq ($(ENV), production)
  61. @perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?## .*$$}' $(MAKEFILE_LIST) \
  62. | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
  63. else
  64. @perl -nle'print $& if m{^[a-zA-Z_-]+:[^#]*?###? .*$$}' $(MAKEFILE_LIST) \
  65. | sort | awk 'BEGIN {FS = ":.*?###? "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
  66. endif
  67. clean: clean-build clean-pyc ## nettoie tous les fichiers temporaires
  68. clean-build: ### nettoie les fichiers de construction du paquet
  69. rm -rf build/
  70. rm -rf dist/
  71. rm -rf *.egg-info
  72. clean-pyc: ### nettoie les fichiers temporaires python
  73. find benevalibre/ \
  74. \( -name '*.pyc' -o -name '*.pyo' -o -name '*~' \) -exec rm -f {} +
  75. init: create-venv config.env update ## initialise l'environnement et l'application
  76. config.env:
  77. ifeq ($(READ_CONFIG_FILE), 1)
  78. cp config.env.example config.env
  79. chmod go-rwx config.env
  80. $(EDITOR) config.env
  81. endif
  82. update: check-config install-deps migrate static docs ## mets à jour l'application et ses dépendances
  83. $(PYTHON) manage.py rendervariations --ignore-missing --replace \
  84. 'accounts.User.avatar' 'association.Association.logo'
  85. touch benevalibre/wsgi.py
  86. check: check-config ## vérifie la configuration de l'instance
  87. $(PYTHON) manage.py check
  88. check-config:
  89. @find . -maxdepth 1 -name config.env -perm /o+rwx -exec false {} + || \
  90. { echo "\033[31mErreur :\033[0m les permissions de config.env ne sont pas bonnes, \
  91. vous devriez au moins faire : chmod o-rwx config.env"; false; }
  92. install-deps: ## installe les dépendances de l'application
  93. $(PIP) install --upgrade --requirement requirements/$(ENV).txt
  94. migrate: ## mets à jour le schéma de la base de données
  95. $(PYTHON) manage.py migrate
  96. static: ## collecte les fichiers statiques
  97. ifeq ($(ENV), production)
  98. @echo "Collecte des fichiers statiques..."
  99. $(PYTHON) manage.py collectstatic --no-input --verbosity 0
  100. endif
  101. ## Cibles liées à l'environnement virtuel
  102. create-venv: $(PYTHON)
  103. $(PYTHON):
  104. ifeq ($(USE_VENV), y)
  105. virtualenv $(VENV_OPT) $(VENV_PYTHON) $(VENV_DIR)
  106. else
  107. @echo "\033[31mErreur !\033[0m Impossible de trouver l'exécutable Python $(PYTHON)"
  108. @exit 1
  109. endif
  110. clear-venv: ## supprime l'environnement virtuel
  111. -rm -rf $(VENV_DIR)
  112. ## Cibles pour le développement
  113. serve: ### démarre un serveur local pour l'application
  114. $(PYTHON) manage.py runserver
  115. test: ### lance les tests de l'application
  116. $(PYTHON) -m pytest --cov --cov-report=term:skip-covered
  117. cov: test ### vérifie la couverture de code
  118. $(PYTHON) -m coverage html
  119. @echo open htmlcov/index.html
  120. lint: ### vérifie la syntaxe et le code python
  121. @$(PYTHON) -m flake8 benevalibre \
  122. || echo "\033[31m[flake8]\033[0m Veuillez corriger les erreurs ci-dessus."
  123. @$(PYTHON) -m isort --check --recursive benevalibre \
  124. || echo "\033[31m[isort]\033[0m Veuillez corriger l'ordre des imports avec : make fix-lint"
  125. ifdef USE_BLACK
  126. @$(PYTHON) -m black --check benevalibre
  127. endif
  128. fix-lint: ### corrige la syntaxe et ordonne les imports python
  129. $(PYTHON) -m isort --recursive benevalibre
  130. ifdef USE_BLACK
  131. $(PYTHON) -m black benevalibre
  132. endif
  133. docs: ## construit la documentation
  134. $(MAKE) -C docs/ html SPHINXBUILD=../$(VENV_DIR)/bin/sphinx-build
  135. clean-docs: ## supprime la documentation (docs/build)
  136. $(MAKE) -C docs/ clean SPHINXBUILD=../$(VENV_DIR)/bin/sphinx-build