148 lines
5.2 KiB
Makefile
148 lines
5.2 KiB
Makefile
# Apollinare - Makefile per sviluppo
|
|
# Uso: make <target>
|
|
|
|
.PHONY: help install build run dev clean test lint backend frontend backend-run frontend-run backend-build frontend-build all stop
|
|
|
|
# Variabili
|
|
BACKEND_DIR := src/backend/Apollinare.API
|
|
FRONTEND_DIR := src/frontend
|
|
BACKEND_PORT := 5000
|
|
FRONTEND_PORT := 5173
|
|
|
|
# Colori per output
|
|
CYAN := \033[0;36m
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
NC := \033[0m # No Color
|
|
|
|
help: ## Mostra questo help
|
|
@echo "$(CYAN)Apollinare - Comandi disponibili:$(NC)"
|
|
@echo ""
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-20s$(NC) %s\n", $$1, $$2}'
|
|
@echo ""
|
|
@echo "$(YELLOW)Esempi:$(NC)"
|
|
@echo " make install # Installa tutte le dipendenze"
|
|
@echo " make dev # Avvia backend e frontend in dev mode"
|
|
@echo " make build # Compila tutto per produzione"
|
|
|
|
# ============================================
|
|
# INSTALLAZIONE
|
|
# ============================================
|
|
|
|
install: backend-restore frontend-install ## Installa tutte le dipendenze (backend + frontend)
|
|
@echo "$(GREEN)Tutte le dipendenze installate!$(NC)"
|
|
|
|
backend-restore: ## Ripristina i pacchetti NuGet del backend
|
|
@echo "$(CYAN)Ripristino pacchetti NuGet...$(NC)"
|
|
cd src && dotnet restore
|
|
|
|
frontend-install: ## Installa le dipendenze npm del frontend
|
|
@echo "$(CYAN)Installazione dipendenze npm...$(NC)"
|
|
cd $(FRONTEND_DIR) && npm install
|
|
|
|
# ============================================
|
|
# BUILD
|
|
# ============================================
|
|
|
|
build: backend-build frontend-build ## Compila backend e frontend
|
|
@echo "$(GREEN)Build completata!$(NC)"
|
|
|
|
backend-build: ## Compila il backend .NET
|
|
@echo "$(CYAN)Compilazione backend...$(NC)"
|
|
cd src && dotnet build --configuration Release
|
|
|
|
frontend-build: ## Compila il frontend React
|
|
@echo "$(CYAN)Compilazione frontend...$(NC)"
|
|
cd $(FRONTEND_DIR) && npm run build
|
|
|
|
# ============================================
|
|
# ESECUZIONE SVILUPPO
|
|
# ============================================
|
|
|
|
dev: ## Avvia backend e frontend in parallelo (dev mode)
|
|
@echo "$(CYAN)Avvio in modalita' sviluppo...$(NC)"
|
|
@echo "$(YELLOW)Backend: http://localhost:$(BACKEND_PORT)$(NC)"
|
|
@echo "$(YELLOW)Frontend: http://localhost:$(FRONTEND_PORT)$(NC)"
|
|
@echo ""
|
|
@$(MAKE) -j2 backend-run frontend-run
|
|
|
|
backend-run: ## Avvia solo il backend in dev mode
|
|
@echo "$(CYAN)Avvio backend su porta $(BACKEND_PORT)...$(NC)"
|
|
cd $(BACKEND_DIR) && dotnet run
|
|
|
|
frontend-run: ## Avvia solo il frontend in dev mode
|
|
@echo "$(CYAN)Avvio frontend su porta $(FRONTEND_PORT)...$(NC)"
|
|
cd $(FRONTEND_DIR) && npm run dev
|
|
|
|
backend-watch: ## Avvia il backend con hot reload (dotnet watch)
|
|
@echo "$(CYAN)Avvio backend con hot reload...$(NC)"
|
|
cd $(BACKEND_DIR) && dotnet watch run
|
|
|
|
# ============================================
|
|
# TEST E LINTING
|
|
# ============================================
|
|
|
|
test: backend-test ## Esegue tutti i test
|
|
@echo "$(GREEN)Test completati!$(NC)"
|
|
|
|
backend-test: ## Esegue i test del backend
|
|
@echo "$(CYAN)Esecuzione test backend...$(NC)"
|
|
cd src && dotnet test
|
|
|
|
lint: frontend-lint ## Esegue il linting
|
|
@echo "$(GREEN)Linting completato!$(NC)"
|
|
|
|
frontend-lint: ## Esegue ESLint sul frontend
|
|
@echo "$(CYAN)Linting frontend...$(NC)"
|
|
cd $(FRONTEND_DIR) && npm run lint
|
|
|
|
# ============================================
|
|
# PULIZIA
|
|
# ============================================
|
|
|
|
clean: backend-clean frontend-clean ## Pulisce tutti gli artefatti di build
|
|
@echo "$(GREEN)Pulizia completata!$(NC)"
|
|
|
|
backend-clean: ## Pulisce gli artefatti di build del backend
|
|
@echo "$(CYAN)Pulizia backend...$(NC)"
|
|
cd src && dotnet clean
|
|
find src -type d -name "bin" -exec rm -rf {} + 2>/dev/null || true
|
|
find src -type d -name "obj" -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
frontend-clean: ## Pulisce gli artefatti di build del frontend
|
|
@echo "$(CYAN)Pulizia frontend...$(NC)"
|
|
rm -rf $(FRONTEND_DIR)/dist
|
|
rm -rf $(FRONTEND_DIR)/node_modules/.vite
|
|
|
|
clean-all: clean ## Pulizia completa (include node_modules)
|
|
@echo "$(CYAN)Rimozione node_modules...$(NC)"
|
|
rm -rf $(FRONTEND_DIR)/node_modules
|
|
|
|
# ============================================
|
|
# DATABASE
|
|
# ============================================
|
|
|
|
db-update: ## Applica le migration del database
|
|
@echo "$(CYAN)Applicazione migration...$(NC)"
|
|
cd $(BACKEND_DIR) && dotnet ef database update
|
|
|
|
db-migration: ## Crea una nuova migration (usa: make db-migration NAME=NomeMigration)
|
|
@echo "$(CYAN)Creazione migration: $(NAME)$(NC)"
|
|
cd $(BACKEND_DIR) && dotnet ef migrations add $(NAME)
|
|
|
|
# ============================================
|
|
# UTILITY
|
|
# ============================================
|
|
|
|
logs: ## Mostra i log del backend (se in esecuzione)
|
|
@tail -f $(BACKEND_DIR)/logs/*.log 2>/dev/null || echo "Nessun file di log trovato"
|
|
|
|
check: ## Verifica che tutti i prerequisiti siano installati
|
|
@echo "$(CYAN)Verifica prerequisiti...$(NC)"
|
|
@command -v dotnet >/dev/null 2>&1 && echo "$(GREEN)dotnet:$(NC) $$(dotnet --version)" || echo "$(YELLOW)dotnet: non trovato$(NC)"
|
|
@command -v node >/dev/null 2>&1 && echo "$(GREEN)node:$(NC) $$(node --version)" || echo "$(YELLOW)node: non trovato$(NC)"
|
|
@command -v npm >/dev/null 2>&1 && echo "$(GREEN)npm:$(NC) $$(npm --version)" || echo "$(YELLOW)npm: non trovato$(NC)"
|
|
|
|
# Target di default
|
|
.DEFAULT_GOAL := help
|