.PHONY: help install install-dev lint format test test-cov serve worker docker-up docker-down clean

help: ## Affiche l'aide
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
		awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%-18s\033[0m %s\n", $$1, $$2}'

# ── Installation ──────────────────────────────────────────────

install: ## Installer les dépendances de production
	pip install -r requirements.txt

install-dev: ## Installer les dépendances de dev + pre-commit
	pip install -r requirements-dev.txt
	pre-commit install

# ── Qualité du code ───────────────────────────────────────────

lint: ## Linter le code (ruff check + mypy)
	ruff check app/ tests/
	mypy app/ --ignore-missing-imports

format: ## Formater le code (ruff format)
	ruff format app/ tests/
	ruff check --fix app/ tests/

# ── Tests ─────────────────────────────────────────────────────

test: ## Lancer les tests
	python -m pytest tests/ -v --tb=short

test-cov: ## Lancer les tests avec couverture
	python -m pytest tests/ -v --tb=short --cov=app --cov-report=term-missing --cov-report=html

# ── Serveur ───────────────────────────────────────────────────

serve: ## Démarrer le serveur de développement
	uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

worker: ## Démarrer le worker ARQ
	python worker.py

# ── Docker ────────────────────────────────────────────────────

docker-up: ## Démarrer tous les services Docker
	docker-compose up -d --build

docker-down: ## Arrêter tous les services Docker
	docker-compose down -v

# ── Nettoyage ─────────────────────────────────────────────────

clean: ## Nettoyer les fichiers temporaires
	find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
	find . -type d -name .pytest_cache -exec rm -rf {} + 2>/dev/null || true
	find . -type d -name .mypy_cache -exec rm -rf {} + 2>/dev/null || true
	find . -type d -name htmlcov -exec rm -rf {} + 2>/dev/null || true
	find . -name "*.pyc" -delete 2>/dev/null || true
