-
This commit is contained in:
147
Makefile
Normal file
147
Makefile
Normal file
@@ -0,0 +1,147 @@
|
||||
# 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/Apollinare.API
|
||||
FRONTEND_DIR := 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
|
||||
Reference in New Issue
Block a user