File size: 2,446 Bytes
66a0674
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 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