-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
148 lines (119 loc) · 4.67 KB
/
setup.py
File metadata and controls
148 lines (119 loc) · 4.67 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
#!/usr/bin/env python3
"""
Script de setup automatizado para o ReactAI
"""
import os
import sys
import subprocess
import platform
from pathlib import Path
def run_command(command, cwd=None, shell=True):
"""Executa um comando e retorna o resultado"""
try:
result = subprocess.run(command, cwd=cwd, shell=shell, capture_output=True, text=True)
if result.returncode != 0:
print(f"❌ Erro ao executar: {command}")
print(f"Erro: {result.stderr}")
return False
return True
except Exception as e:
print(f"❌ Erro ao executar: {command}")
print(f"Exceção: {e}")
return False
def check_requirements():
"""Verifica se os pré-requisitos estão instalados"""
print("🔍 Verificando pré-requisitos...")
# Verificar Python
python_version = sys.version_info
if python_version.major < 3 or (python_version.major == 3 and python_version.minor < 8):
print("❌ Python 3.8+ é necessário")
return False
print(f"✅ Python {python_version.major}.{python_version.minor}.{python_version.micro}")
# Verificar Node.js
if not run_command("node --version", shell=True):
print("❌ Node.js é necessário")
return False
# Verificar npm
if not run_command("npm --version", shell=True):
print("❌ npm é necessário")
return False
# Verificar PostgreSQL
if not run_command("psql --version", shell=True):
print("⚠️ PostgreSQL não encontrado. Certifique-se de que está instalado.")
print("✅ Pré-requisitos verificados")
return True
def setup_backend():
"""Configura o backend"""
print("\n🔧 Configurando backend...")
backend_dir = Path("backend")
if not backend_dir.exists():
print("❌ Diretório backend não encontrado")
return False
# Instalar dependências Python
print("📦 Instalando dependências Python...")
if not run_command("pip install -r requirements.txt", cwd=backend_dir):
return False
# Criar arquivo .env se não existir
env_file = backend_dir / ".env"
env_example = backend_dir / "env.example"
if not env_file.exists() and env_example.exists():
print("📝 Criando arquivo .env...")
run_command(f"cp env.example .env", cwd=backend_dir)
print("⚠️ Configure as variáveis de ambiente no arquivo .env")
print("✅ Backend configurado")
return True
def setup_frontend():
"""Configura o frontend"""
print("\n🎨 Configurando frontend...")
frontend_dir = Path("frontend")
if not frontend_dir.exists():
print("❌ Diretório frontend não encontrado")
return False
# Instalar dependências Node.js
print("📦 Instalando dependências Node.js...")
if not run_command("npm install", cwd=frontend_dir):
return False
print("✅ Frontend configurado")
return True
def create_database():
"""Cria o banco de dados"""
print("\n🗄️ Configurando banco de dados...")
# Tentar criar banco de dados
if run_command("createdb reactai_db", shell=True):
print("✅ Banco de dados criado")
else:
print("⚠️ Não foi possível criar o banco de dados automaticamente")
print(" Execute manualmente: createdb reactai_db")
return True
def main():
"""Função principal"""
print("🚀 ReactAI - Setup Automatizado")
print("=" * 50)
# Verificar se estamos no diretório correto
if not Path("README.md").exists():
print("❌ Execute este script no diretório raiz do projeto")
return
# Verificar pré-requisitos
if not check_requirements():
print("\n❌ Setup falhou. Verifique os pré-requisitos.")
return
# Setup backend
if not setup_backend():
print("\n❌ Setup do backend falhou.")
return
# Setup frontend
if not setup_frontend():
print("\n❌ Setup do frontend falhou.")
return
# Setup banco de dados
create_database()
print("\n" + "=" * 50)
print("✅ Setup concluído com sucesso!")
print("\n📋 Próximos passos:")
print("1. Configure as variáveis de ambiente em backend/.env")
print("2. Inicie o backend: cd backend && uvicorn app.main:app --reload")
print("3. Inicie o frontend: cd frontend && npm start")
print("4. Acesse: http://localhost:3000")
print("\n📚 Documentação: http://localhost:8000/docs")
if __name__ == "__main__":
main()