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