-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathMakefile
More file actions
252 lines (209 loc) · 8.52 KB
/
Makefile
File metadata and controls
252 lines (209 loc) · 8.52 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
.PHONY: setup dev run install db-setup db-migrate db-seed db-reset migrate-up migrate-down migrate-create alembic-revision alembic-upgrade alembic-downgrade alembic-migrate alembic-reset seed-mcp-servers seed-all docker-build docker-up docker-down docker-logs lint format install-dev venv clear-cache clear-python-cache clear-uv-cache clear-all-cache reset-venv refresh-env help
# =============================================================================
# PADRÃO PADRONIZADO - COMANDOS PRINCIPAIS
# =============================================================================
# Setup completo do projeto (install + db-setup)
setup: install db-setup
@echo "✅ Setup completo concluído!"
# Instalar dependências
install:
@echo "📦 Instalando dependências..."
uv venv || true
uv pip install -e ".[dev]"
@echo "✅ Dependências instaladas!"
# Rodar em modo desenvolvimento
dev:
@echo "🔧 Iniciando EvoAI Processor em modo desenvolvimento..."
uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload --env-file .env
# Rodar em modo produção
run:
@echo "🚀 Iniciando EvoAI Processor em modo produção..."
uvicorn src.main:app --host 0.0.0.0 --port 8000 --workers 4
# Setup do banco de dados (create + migrate)
db-setup:
@echo "🗄️ Configurando banco de dados..."
@echo "⚠️ Certifique-se de que o PostgreSQL está rodando e configurado no .env"
alembic upgrade head
@echo "✅ Banco de dados configurado!"
# Rodar migrações pendentes
db-migrate: migrate-up
# Rodar seeds
db-seed: seed-all
# Resetar banco completo (drop + create + migrate)
db-reset:
@echo "🔄 Resetando banco de dados..."
@echo "⚠️ ATENÇÃO: Isso irá apagar todos os dados!"
@read -p "Tem certeza? [y/N]: " confirm && [ "$$confirm" = "y" ] || exit 1
alembic downgrade base || true
alembic upgrade head
@echo "✅ Banco de dados resetado!"
# =============================================================================
# COMANDOS DE MIGRAÇÃO (PADRÃO PADRONIZADO)
# =============================================================================
# Rodar migrações pendentes
migrate-up:
@echo "🚀 Rodando migrações pendentes..."
alembic upgrade head
@echo "✅ Migrações aplicadas!"
# Reverter última migração
migrate-down:
@echo "⬇️ Revertendo última migração..."
alembic downgrade -1
@echo "✅ Migração revertida!"
# Criar nova migração (uso: make migrate-create NAME=nome_da_migracao)
migrate-create:
@if [ -z "$(NAME)" ]; then \
echo "❌ NAME é obrigatório. Use: make migrate-create NAME=nome_da_migracao"; \
exit 1; \
fi
@echo "📝 Criando nova migração: $(NAME)..."
alembic revision --autogenerate -m "$(NAME)"
@echo "✅ Migração criada!"
# =============================================================================
# COMANDOS ALEMBIC (COMPATIBILIDADE)
# =============================================================================
init:
alembic init alembics
# make alembic-revision message="migration description"
alembic-revision:
alembic revision --autogenerate -m "$(message)"
# Command to update database to latest version (execute existing migrations)
alembic-upgrade: migrate-up
# Command to downgrade one version
alembic-downgrade: migrate-down
# Command to create a new migration and apply it
alembic-migrate: ## Criar e aplicar migração (compatibilidade)
@if [ -z "$(message)" ]; then \
echo "❌ message is required. Use: make alembic-migrate message=\"descrição\""; \
exit 1; \
fi
alembic revision --autogenerate -m "$(message)" && alembic upgrade head
# Command to reset the database
alembic-reset: db-reset
# Command to clean cache in all project folders
clear-cache:
rm -rf ~/.cache/uv/environments-v2/* && find . -type d -name "__pycache__" -exec rm -r {} +
# Command to clean all Python cache files
clear-python-cache:
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -name "*.pyc" -delete 2>/dev/null || true
find . -name "*.pyo" -delete 2>/dev/null || true
find . -name "*.pyd" -delete 2>/dev/null || true
find . -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
find . -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
# Command to clean UV cache
clear-uv-cache:
uv cache clean
# Command to clean all caches (comprehensive)
clear-all-cache:
@echo "🧹 Cleaning Python cache files..."
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -name "*.pyc" -delete 2>/dev/null || true
find . -name "*.pyo" -delete 2>/dev/null || true
find . -name "*.pyd" -delete 2>/dev/null || true
find . -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
find . -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
@echo "🧹 Cleaning UV cache..."
uv cache clean 2>/dev/null || true
rm -rf ~/.cache/uv/environments-v2/* 2>/dev/null || true
@echo "🧹 Cleaning system cache..."
sudo purge 2>/dev/null || true
@echo "✅ All caches cleared!"
# Command to reset virtual environment
reset-venv:
@echo "🔄 Resetting virtual environment..."
rm -rf .venv 2>/dev/null || true
uv venv
@echo "✅ Virtual environment reset!"
# Command to refresh environment (reset venv + reinstall)
refresh-env:
@echo "🔄 Refreshing development environment..."
rm -rf .venv 2>/dev/null || true
uv venv
uv pip install -e ".[dev]"
@echo "✅ Environment refreshed!"
# Command to create a new migration and apply it
alembic-migrate: ## Criar e aplicar migração (compatibilidade)
@if [ -z "$(message)" ]; then \
echo "❌ message is required. Use: make alembic-migrate message=\"descrição\""; \
exit 1; \
fi
alembic revision --autogenerate -m "$(message)" && alembic upgrade head
# Command to reset the database
alembic-reset: db-reset ## Resetar banco (compatibilidade)
# Commands to run seeders
seed-mcp-servers:
python -m scripts.seeders.mcp_server_seeder
seed-all:
python -m scripts.run_seeders
# Docker commands
docker-build:
docker-compose build
docker-up:
docker-compose up -d
docker-down:
docker-compose down
docker-logs:
docker-compose logs -f
docker-seed:
docker-compose exec api python -m scripts.run_seeders
# Testing, linting and formatting commands
lint:
flake8 src/ tests/
format:
black src/ tests/
# Virtual environment and installation commands
venv:
python -m venv venv
install:
pip install -e .
install-dev:
pip install -e ".[dev]"
# =============================================================================
# HELP
# =============================================================================
help: ## Mostrar ajuda com todos os comandos
@echo "EvoAI Processor - Makefile Commands"
@echo ""
@echo "🚀 Quick Start (PADRÃO PADRONIZADO):"
@echo " make setup - Setup completo (install + db-setup)"
@echo " make dev - Rodar em modo desenvolvimento"
@echo " make run - Rodar em modo produção"
@echo ""
@echo "📦 Setup & Installation:"
@echo " make install - Instalar dependências"
@echo " make setup - Setup completo (install + db-setup)"
@echo ""
@echo "🗄️ Database Management (PADRÃO PADRONIZADO):"
@echo " make db-setup - Setup inicial do banco (create + migrate)"
@echo " make db-migrate - Rodar migrações pendentes"
@echo " make db-seed - Rodar seeds"
@echo " make db-reset - Resetar banco completo"
@echo ""
@echo "🔄 Migrations (PADRÃO PADRONIZADO):"
@echo " make migrate-up - Rodar migrações pendentes"
@echo " make migrate-down - Reverter última migração"
@echo " make migrate-create NAME=nome - Criar nova migração"
@echo ""
@echo "🔄 Alembic Commands (Compatibilidade):"
@echo " make alembic-upgrade - Rodar migrações (alias para migrate-up)"
@echo " make alembic-downgrade - Reverter migração (alias para migrate-down)"
@echo " make alembic-revision message=\"desc\" - Criar migração"
@echo " make alembic-migrate message=\"desc\" - Criar e aplicar migração"
@echo " make alembic-reset - Resetar banco (alias para db-reset)"
@echo ""
@echo "🌱 Seeds:"
@echo " make db-seed - Rodar seeds (padrão padronizado)"
@echo " make seed-mcp-servers - Popular servidores MCP"
@echo " make seed-all - Rodar todos os seeders"
@echo ""
@echo "🧹 Cleanup:"
@echo " make clean - Limpar cache e arquivos temporários"
@echo " make clear-cache - Limpar cache Python e UV"
@echo " make clear-all-cache - Limpar todos os caches"
@echo ""
@echo "🐳 Docker:"
@echo " make docker-build - Build da imagem"
@echo " make docker-up - Subir containers"
@echo " make docker-down - Parar containers"
@echo " make docker-logs - Ver logs"