# Makefile pour FastAPI avec Poetry et Docker .PHONY: help build up down restart logs shell db-shell test lint format clean install migrate seed backup restore # Variables DOCKER_COMPOSE = docker-compose SERVICE_API = api SERVICE_DB = db PYTHON_FILES = src/project5/ tests/ docs/ PROJECT_NAME = project5 # Format des images par default FORMAT=png # Couleurs pour l'affichage GREEN = \033[0;32m YELLOW = \033[0;33m RED = \033[0;31m NC = \033[0m # Help - Affiche l'aide help: ## Affiche cette aide @echo "$(GREEN)Makefile pour $(PROJECT_NAME) - FastAPI avec Poetry$(NC)" @echo "" @echo "$(YELLOW)Developpement LOCAL (recommande):$(NC)" @grep -E '^[a-zA-Z_-]*-local:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-25s$(NC) %s\n", $$1, $$2}' # Developpement local (sans Docker) dev-local: ## Lance l'API en local avec Poetry @echo "$(GREEN)Demarrage local avec Poetry...$(NC)" poetry run uvicorn src.$(PROJECT_NAME).main:app --host 0.0.0.0 --port 8000 --reload start-local: ## Alias pour dev-local $(MAKE) dev-local install-local: ## Installe les dependances avec Poetry @echo "$(GREEN)Installation des dependances avec Poetry...$(NC)" poetry install update-local: ## Met a jour les dependances @echo "$(GREEN)Mise a jour des dependances...$(NC)" poetry update # Qualite de code (local) lint-local: ## Verifie le code avec flake8 et mypy en local @echo "$(GREEN)Verification du code en local...$(NC)" poetry run flake8 $(PYTHON_FILES) poetry run mypy $(PYTHON_FILES) --ignore-missing-imports format-local: ## Formate le code avec black et isort en local @echo "$(GREEN)Formatage du code en local...$(NC)" poetry run black $(PYTHON_FILES) poetry run isort $(PYTHON_FILES) format-check-local: ## Verifie le formatage sans modifier en local @echo "$(GREEN)Verification du formatage en local...$(NC)" poetry run black --check $(PYTHON_FILES) poetry run isort --check-only $(PYTHON_FILES) check-local: format-check-local lint-local ## Verifie le formatage et la qualite du code en local # Tests local test-local: ## Lance les tests en local avec Poetry @echo "$(GREEN)Execution des tests en local...$(NC)" poetry run pytest -v test-cov-local: ## Lance les tests avec couverture en local @echo "$(GREEN)Tests avec couverture en local...$(NC)" poetry run pytest --cov=src/$(PROJECT_NAME) --cov-report=html --cov-report=term-missing # Commande par defaut .DEFAULT_GOAL := help