generated from gilles/template-webapp
134 lines
4.2 KiB
Makefile
134 lines
4.2 KiB
Makefile
.PHONY: help dev test lint fmt clean docker-up docker-down install migrate
|
|
|
|
# Variables
|
|
BACKEND_DIR = backend
|
|
FRONTEND_DIR = frontend
|
|
PYTHON = python3
|
|
UV = uv
|
|
NPM = npm
|
|
|
|
help: ## Affiche cette aide
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
# === Développement ===
|
|
|
|
dev: ## Lance l'environnement de développement complet (backend + frontend)
|
|
docker compose up --build
|
|
|
|
dev-backend: ## Lance uniquement le backend en mode dev
|
|
cd $(BACKEND_DIR) && $(UV) run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
|
|
|
dev-frontend: ## Lance uniquement le frontend en mode dev
|
|
cd $(FRONTEND_DIR) && $(NPM) run dev
|
|
|
|
# === Installation ===
|
|
|
|
install: install-backend install-frontend ## Installe toutes les dépendances
|
|
|
|
install-backend: ## Installe les dépendances Python (backend)
|
|
cd $(BACKEND_DIR) && $(UV) sync
|
|
|
|
install-frontend: ## Installe les dépendances Node (frontend)
|
|
cd $(FRONTEND_DIR) && $(NPM) install
|
|
|
|
# === Tests ===
|
|
|
|
test: test-backend test-frontend ## Lance tous les tests
|
|
|
|
test-backend: ## Lance les tests backend (pytest)
|
|
cd $(BACKEND_DIR) && $(UV) run pytest
|
|
|
|
test-backend-cov: ## Lance les tests backend avec couverture
|
|
cd $(BACKEND_DIR) && $(UV) run pytest --cov=app --cov-report=html --cov-report=term
|
|
|
|
test-frontend: ## Lance les tests frontend (vitest)
|
|
cd $(FRONTEND_DIR) && $(NPM) run test
|
|
|
|
# === Linting & Formatage ===
|
|
|
|
lint: lint-backend lint-frontend ## Lance tous les linters
|
|
|
|
lint-backend: ## Lint le code backend (ruff + mypy)
|
|
cd $(BACKEND_DIR) && $(UV) run ruff check .
|
|
cd $(BACKEND_DIR) && $(UV) run mypy .
|
|
|
|
lint-frontend: ## Lint le code frontend (eslint)
|
|
cd $(FRONTEND_DIR) && $(NPM) run lint
|
|
|
|
fmt: fmt-backend fmt-frontend ## Formate tout le code
|
|
|
|
fmt-backend: ## Formate le code backend (ruff)
|
|
cd $(BACKEND_DIR) && $(UV) run ruff check --fix .
|
|
cd $(BACKEND_DIR) && $(UV) run ruff format .
|
|
|
|
fmt-frontend: ## Formate le code frontend (prettier)
|
|
cd $(FRONTEND_DIR) && $(NPM) run fmt
|
|
|
|
# === Base de données ===
|
|
|
|
migrate: ## Crée et applique une nouvelle migration Alembic
|
|
cd $(BACKEND_DIR) && $(UV) run alembic revision --autogenerate -m "$(msg)"
|
|
cd $(BACKEND_DIR) && $(UV) run alembic upgrade head
|
|
|
|
migrate-up: ## Applique les migrations en attente
|
|
cd $(BACKEND_DIR) && $(UV) run alembic upgrade head
|
|
|
|
migrate-down: ## Rollback de la dernière migration
|
|
cd $(BACKEND_DIR) && $(UV) run alembic downgrade -1
|
|
|
|
migrate-history: ## Affiche l'historique des migrations
|
|
cd $(BACKEND_DIR) && $(UV) run alembic history
|
|
|
|
db-reset: ## Réinitialise la base de données (ATTENTION: supprime toutes les données!)
|
|
rm -f data/homestock.db
|
|
$(MAKE) migrate-up
|
|
|
|
# === Docker ===
|
|
|
|
docker-up: ## Démarre les conteneurs Docker
|
|
docker compose up -d
|
|
|
|
docker-down: ## Arrête les conteneurs Docker
|
|
docker compose down
|
|
|
|
docker-logs: ## Affiche les logs des conteneurs
|
|
docker compose logs -f
|
|
|
|
docker-rebuild: ## Rebuild et redémarre les conteneurs
|
|
docker compose up --build -d
|
|
|
|
docker-clean: ## Nettoie les conteneurs, volumes et images Docker
|
|
docker compose down -v
|
|
docker system prune -f
|
|
|
|
# === Nettoyage ===
|
|
|
|
clean: ## Nettoie 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 ".ruff_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 "node_modules" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name "dist" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete
|
|
rm -rf $(BACKEND_DIR)/htmlcov
|
|
rm -rf $(FRONTEND_DIR)/coverage
|
|
|
|
clean-all: clean docker-clean ## Nettoie tout (fichiers + Docker)
|
|
rm -rf data/homestock.db
|
|
rm -rf uploads/*
|
|
|
|
# === Utilitaires ===
|
|
|
|
shell-backend: ## Ouvre un shell Python dans l'environnement backend
|
|
cd $(BACKEND_DIR) && $(UV) run python
|
|
|
|
shell-db: ## Ouvre un shell SQLite sur la base de données
|
|
sqlite3 data/homestock.db
|
|
|
|
check: lint test ## Vérifie la qualité du code (lint + tests)
|
|
|
|
init: install migrate-up ## Initialise le projet pour la première fois
|
|
@echo "✅ Projet initialisé avec succès!"
|
|
@echo "👉 Lancez 'make dev' pour démarrer le développement"
|