Makefile•4.21 kB
# Makefile pour DroitFrancaisMCP
# Simplifie les tâches courantes de développement
.PHONY: help install install-dev test lint format clean run security update
# Couleurs pour l'affichage
RED=\033[0;31m
GREEN=\033[0;32m
YELLOW=\033[1;33m
NC=\033[0m # No Color
help: ## Afficher cette aide
@echo "$(GREEN)DroitFrancaisMCP - Commandes disponibles$(NC)"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-20s$(NC) %s\n", $$1, $$2}'
install: ## Installer les dépendances de production
@echo "$(GREEN)Installation des dépendances de production...$(NC)"
pip install -r requirements.txt
@echo "$(GREEN)✓ Installation terminée$(NC)"
install-dev: ## Installer les dépendances de développement
@echo "$(GREEN)Installation des dépendances de développement...$(NC)"
pip install -r requirements.txt -r requirements-dev.txt
@echo "$(GREEN)✓ Installation terminée$(NC)"
test: ## Lancer les tests
@echo "$(GREEN)Lancement des tests...$(NC)"
pytest --cov=. --cov-report=term-missing --cov-report=html
@echo "$(GREEN)✓ Tests terminés - voir htmlcov/index.html pour le rapport$(NC)"
test-quick: ## Lancer les tests sans coverage
@echo "$(GREEN)Lancement des tests rapides...$(NC)"
pytest -v
@echo "$(GREEN)✓ Tests terminés$(NC)"
lint: ## Vérifier la qualité du code
@echo "$(GREEN)Vérification du code...$(NC)"
@echo "$(YELLOW)→ Flake8$(NC)"
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=100 --statistics
@echo "$(YELLOW)→ MyPy$(NC)"
mypy --install-types --non-interactive --ignore-missing-imports . || true
@echo "$(GREEN)✓ Vérification terminée$(NC)"
format: ## Formater le code avec Black et isort
@echo "$(GREEN)Formatage du code...$(NC)"
@echo "$(YELLOW)→ Black$(NC)"
black --line-length 100 .
@echo "$(YELLOW)→ isort$(NC)"
isort .
@echo "$(GREEN)✓ Formatage terminé$(NC)"
format-check: ## Vérifier le formatage sans modifier
@echo "$(GREEN)Vérification du formatage...$(NC)"
black --check --line-length 100 .
isort --check-only .
@echo "$(GREEN)✓ Formatage OK$(NC)"
security: ## Vérifier les vulnérabilités de sécurité
@echo "$(GREEN)Scan de sécurité...$(NC)"
@echo "$(YELLOW)→ Safety (dépendances)$(NC)"
safety check || true
@echo "$(YELLOW)→ Bandit (code)$(NC)"
bandit -r . -f json -o bandit-report.json || true
bandit -r . || true
@echo "$(GREEN)✓ Scan terminé$(NC)"
clean: ## Nettoyer les fichiers temporaires
@echo "$(GREEN)Nettoyage...$(NC)"
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete
find . -type f -name "*.pyo" -delete
find . -type f -name "*.log" -delete
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
rm -rf .pytest_cache .mypy_cache .coverage htmlcov/ dist/ build/
@echo "$(GREEN)✓ Nettoyage terminé$(NC)"
run: ## Lancer le serveur MCP
@echo "$(GREEN)Démarrage du serveur MCP...$(NC)"
python3 droit_francais_MCP.py
update: ## Mettre à jour les dépendances
@echo "$(GREEN)Mise à jour des dépendances...$(NC)"
pip list --outdated
@echo ""
@echo "$(YELLOW)Pour mettre à jour un package:$(NC)"
@echo " pip install --upgrade <package>"
@echo " Puis mettre à jour requirements.txt"
check-all: format lint test security ## Tout vérifier (format, lint, test, security)
@echo "$(GREEN)✓ Toutes les vérifications sont terminées !$(NC)"
init: ## Initialiser l'environnement de développement
@echo "$(GREEN)Initialisation de l'environnement...$(NC)"
python3 -m venv .venv
@echo "$(YELLOW)Activez l'environnement virtuel :$(NC)"
@echo " source .venv/bin/activate (Linux/macOS)"
@echo " .venv\\Scripts\\activate (Windows)"
@echo ""
@echo "$(YELLOW)Puis installez les dépendances :$(NC)"
@echo " make install-dev"
version: ## Afficher la version
@python3 -c "from __version__ import __version__, __author__; print(f'Version: {__version__}\nAuteur: {__author__}')"
.DEFAULT_GOAL := help