|
1 | | -.PHONY: run test build lint docker |
| 1 | +.PHONY: help dev run build test test-coverage test-race lint vet fmt check \ |
| 2 | + deps deps-update deps-clean clean clean-all \ |
| 3 | + docker-build docker-run setup |
2 | 4 |
|
3 | | -run: |
4 | | - go run main.go |
| 5 | +include .env |
| 6 | +export |
5 | 7 |
|
6 | | -test: |
7 | | - go test ./... |
| 8 | +# Configurações |
| 9 | +APP_NAME=evo-bot-runtime |
| 10 | +MAIN_PATH=./cmd/server |
| 11 | +BUILD_DIR=bin |
| 12 | +GO=go |
| 13 | +GOFLAGS=-v |
8 | 14 |
|
9 | | -build: |
10 | | - go build -o bin/evo-bot-runtime . |
| 15 | +# Cores para output |
| 16 | +GREEN=\033[0;32m |
| 17 | +YELLOW=\033[0;33m |
| 18 | +RED=\033[0;31m |
| 19 | +NC=\033[0m # No Color |
11 | 20 |
|
12 | | -lint: |
13 | | - gear validate |
14 | | - go vet ./... |
| 21 | +##@ Ajuda |
15 | 22 |
|
16 | | -docker: |
17 | | - docker build -t evo-bot-runtime . |
| 23 | +help: ## Exibe esta mensagem de ajuda |
| 24 | + @echo "$(GREEN)Evo Bot Runtime - Makefile$(NC)" |
| 25 | + @echo "" |
| 26 | + @awk 'BEGIN {FS = ":.*##"; printf "\nUso:\n make $(YELLOW)<target>$(NC)\n"} /^[a-zA-Z_-]+:.*?##/ { printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2 } /^##@/ { printf "\n$(YELLOW)%s$(NC)\n", substr($$0, 5) } ' $(MAKEFILE_LIST) |
| 27 | + |
| 28 | +##@ Desenvolvimento |
| 29 | + |
| 30 | +dev: ## Roda a aplicação em modo desenvolvimento |
| 31 | + @echo "$(GREEN)🔧 Iniciando Evo Bot Runtime em modo desenvolvimento...$(NC)" |
| 32 | + $(GO) run -race $(MAIN_PATH) |
| 33 | + |
| 34 | +run: ## Roda a aplicação em modo produção |
| 35 | + @echo "$(GREEN)🚀 Iniciando Evo Bot Runtime...$(NC)" |
| 36 | + $(GO) run $(MAIN_PATH) |
| 37 | + |
| 38 | +##@ Build |
| 39 | + |
| 40 | +build: ## Compila a aplicação |
| 41 | + @echo "$(GREEN)🔨 Compilando $(APP_NAME)...$(NC)" |
| 42 | + @mkdir -p $(BUILD_DIR) |
| 43 | + $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME) $(MAIN_PATH) |
| 44 | + @echo "$(GREEN)✅ Build completo: $(BUILD_DIR)/$(APP_NAME)$(NC)" |
| 45 | + |
| 46 | +build-linux: ## Compila para Linux |
| 47 | + @echo "$(GREEN)🔨 Compilando para Linux...$(NC)" |
| 48 | + @mkdir -p $(BUILD_DIR) |
| 49 | + GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 $(MAIN_PATH) |
| 50 | + @echo "$(GREEN)✅ Build Linux completo$(NC)" |
| 51 | + |
| 52 | +##@ Testes |
| 53 | + |
| 54 | +test: ## Roda todos os testes |
| 55 | + @echo "$(GREEN)🧪 Rodando testes...$(NC)" |
| 56 | + $(GO) test -v ./... |
| 57 | + |
| 58 | +test-coverage: ## Roda testes com cobertura |
| 59 | + @echo "$(GREEN)🧪 Rodando testes com cobertura...$(NC)" |
| 60 | + $(GO) test -v -coverprofile=coverage.out ./... |
| 61 | + $(GO) tool cover -html=coverage.out -o coverage.html |
| 62 | + @echo "$(GREEN)✅ Cobertura gerada: coverage.html$(NC)" |
| 63 | + |
| 64 | +test-race: ## Roda testes verificando race conditions |
| 65 | + @echo "$(GREEN)🧪 Rodando testes com race detector...$(NC)" |
| 66 | + $(GO) test -race -v ./... |
| 67 | + |
| 68 | +##@ Dependências |
| 69 | + |
| 70 | +deps: ## Instala dependências |
| 71 | + @echo "$(GREEN)📦 Instalando dependências...$(NC)" |
| 72 | + $(GO) mod download |
| 73 | + $(GO) mod verify |
| 74 | + @echo "$(GREEN)✅ Dependências instaladas$(NC)" |
| 75 | + |
| 76 | +deps-update: ## Atualiza dependências |
| 77 | + @echo "$(GREEN)📦 Atualizando dependências...$(NC)" |
| 78 | + $(GO) get -u ./... |
| 79 | + $(GO) mod tidy |
| 80 | + @echo "$(GREEN)✅ Dependências atualizadas$(NC)" |
| 81 | + |
| 82 | +deps-clean: ## Limpa dependências não utilizadas |
| 83 | + @echo "$(GREEN)🧹 Limpando dependências...$(NC)" |
| 84 | + $(GO) mod tidy |
| 85 | + @echo "$(GREEN)✅ Dependências limpas$(NC)" |
| 86 | + |
| 87 | +##@ Docker |
| 88 | + |
| 89 | +docker-build: ## Build da imagem Docker |
| 90 | + @echo "$(GREEN)🐳 Construindo imagem Docker...$(NC)" |
| 91 | + docker build -t $(APP_NAME):latest . |
| 92 | + @echo "$(GREEN)✅ Imagem Docker construída$(NC)" |
| 93 | + |
| 94 | +docker-run: ## Roda container Docker |
| 95 | + @echo "$(GREEN)🐳 Iniciando container...$(NC)" |
| 96 | + docker run -p 8080:8080 --env-file .env $(APP_NAME):latest |
| 97 | + |
| 98 | +##@ Linting e Formatação |
| 99 | + |
| 100 | +fmt: ## Formata o código |
| 101 | + @echo "$(GREEN)✨ Formatando código...$(NC)" |
| 102 | + $(GO) fmt ./... |
| 103 | + @echo "$(GREEN)✅ Código formatado$(NC)" |
| 104 | + |
| 105 | +lint: ## Executa linter (requer golangci-lint) |
| 106 | + @echo "$(GREEN)🔍 Executando linter...$(NC)" |
| 107 | + @if command -v golangci-lint > /dev/null; then \ |
| 108 | + golangci-lint run ./...; \ |
| 109 | + echo "$(GREEN)✅ Lint completo$(NC)"; \ |
| 110 | + else \ |
| 111 | + echo "$(RED)❌ golangci-lint não instalado. Instale com: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest$(NC)"; \ |
| 112 | + exit 1; \ |
| 113 | + fi |
| 114 | + |
| 115 | +vet: ## Executa go vet |
| 116 | + @echo "$(GREEN)🔍 Executando go vet...$(NC)" |
| 117 | + $(GO) vet ./... |
| 118 | + @echo "$(GREEN)✅ Vet completo$(NC)" |
| 119 | + |
| 120 | +check: fmt vet lint test ## Executa todas as verificações |
| 121 | + |
| 122 | +##@ Limpeza |
| 123 | + |
| 124 | +clean: ## Remove arquivos de build |
| 125 | + @echo "$(YELLOW)🧹 Limpando arquivos de build...$(NC)" |
| 126 | + @rm -rf $(BUILD_DIR) |
| 127 | + @rm -f coverage.out coverage.html |
| 128 | + @echo "$(GREEN)✅ Limpeza completa$(NC)" |
| 129 | + |
| 130 | +clean-all: clean ## Remove arquivos de build e cache |
| 131 | + @echo "$(YELLOW)🧹 Limpeza completa (incluindo cache)...$(NC)" |
| 132 | + $(GO) clean -cache -testcache -modcache |
| 133 | + @echo "$(GREEN)✅ Limpeza completa$(NC)" |
| 134 | + |
| 135 | +##@ Utilitários |
| 136 | + |
| 137 | +setup: deps ## Setup completo do ambiente de desenvolvimento |
| 138 | + @echo "$(GREEN)🎉 Setup completo!$(NC)" |
| 139 | + @echo "" |
| 140 | + @echo "Para começar a desenvolver, rode:" |
| 141 | + @echo " $(YELLOW)make dev$(NC)" |
| 142 | + @echo "" |
| 143 | + @echo "Outros comandos úteis:" |
| 144 | + @echo " $(YELLOW)make help$(NC) - Ver todos os comandos" |
| 145 | + @echo " $(YELLOW)make test$(NC) - Rodar testes" |
| 146 | + @echo " $(YELLOW)make build$(NC) - Compilar a aplicação" |
0 commit comments