#!/bin/bash # Script de setup para ambiente de desenvolvimento # Uso: ./scripts/setup-dev.sh set -e echo "=== Setup do Ambiente de Desenvolvimento ===" echo "" # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Funcao para printar status ok() { echo -e "${GREEN}[OK]${NC} $1"; } warn() { echo -e "${YELLOW}[AVISO]${NC} $1"; } err() { echo -e "${RED}[ERRO]${NC} $1"; } # 1. Verificar pre-requisitos echo "1. Verificando pre-requisitos..." # Verificar Bun if command -v bun &> /dev/null; then BUN_VERSION=$(bun --version) ok "Bun instalado: v$BUN_VERSION" else err "Bun nao encontrado!" echo " Instale com: curl -fsSL https://bun.sh/install | bash" exit 1 fi # Verificar Docker if command -v docker &> /dev/null; then ok "Docker instalado" else warn "Docker nao encontrado. Voce precisara configurar o PostgreSQL manualmente." fi # Verificar Git if command -v git &> /dev/null; then ok "Git instalado" else err "Git nao encontrado!" exit 1 fi echo "" # 2. Configurar remotes do Git echo "2. Configurando remotes do Git..." # Verificar se estamos em um repositorio git if [ ! -d ".git" ]; then err "Este diretorio nao e um repositorio Git!" exit 1 fi # Verificar/adicionar remote forgejo if git remote get-url forgejo &> /dev/null; then ok "Remote 'forgejo' ja configurado" else git remote add forgejo https://git.esdrasrenan.com.br/esdras/sistema-de-chamados.git ok "Remote 'forgejo' adicionado" fi # Mostrar remotes echo " Remotes configurados:" git remote -v | sed 's/^/ /' echo "" # 3. Instalar dependencias echo "3. Instalando dependencias..." bun install ok "Dependencias instaladas" echo "" # 4. Configurar arquivo .env echo "4. Configurando arquivo .env..." if [ -f ".env" ]; then warn "Arquivo .env ja existe. Pulando..." else if [ -f ".env.example" ]; then cp .env.example .env ok "Arquivo .env criado a partir do .env.example" warn "IMPORTANTE: Edite o arquivo .env com suas configuracoes!" else # Criar .env basico cat > .env << 'EOF' DATABASE_URL=postgresql://postgres:dev@localhost:5432/sistema_chamados BETTER_AUTH_SECRET=dev-secret-change-in-production NEXT_PUBLIC_APP_URL=http://localhost:3000 BETTER_AUTH_URL=http://localhost:3000 NEXT_PUBLIC_CONVEX_URL=http://localhost:3210 EOF ok "Arquivo .env criado com valores padrao para desenvolvimento" warn "IMPORTANTE: Ajuste as configuracoes conforme necessario!" fi fi echo "" # 5. Configurar PostgreSQL via Docker echo "5. Configurando PostgreSQL..." if command -v docker &> /dev/null; then if docker ps -a --format '{{.Names}}' | grep -q '^postgres-dev$'; then # Container existe, verificar se esta rodando if docker ps --format '{{.Names}}' | grep -q '^postgres-dev$'; then ok "PostgreSQL ja esta rodando" else docker start postgres-dev ok "PostgreSQL iniciado" fi else # Criar container docker run -d \ --name postgres-dev \ -p 5432:5432 \ -e POSTGRES_PASSWORD=dev \ -e POSTGRES_DB=sistema_chamados \ postgres:16 ok "PostgreSQL criado e iniciado" echo " Aguardando PostgreSQL inicializar..." sleep 3 fi else warn "Docker nao disponivel. Configure o PostgreSQL manualmente." echo " DATABASE_URL deve apontar para seu servidor PostgreSQL" fi echo "" # 6. Gerar cliente Prisma echo "6. Gerando cliente Prisma..." bun run prisma:generate ok "Cliente Prisma gerado" echo "" # 7. Inicializar banco de dados echo "7. Inicializando banco de dados..." # Verificar se o banco esta acessivel if bunx prisma db push --skip-generate 2>/dev/null; then ok "Schema do banco atualizado" # Seed inicial echo " Populando dados iniciais..." if bun run auth:seed 2>/dev/null; then ok "Dados iniciais criados" else warn "Seed falhou ou ja foi executado anteriormente" fi else warn "Nao foi possivel conectar ao banco de dados" echo " Verifique se o PostgreSQL esta rodando e as credenciais no .env" fi echo "" # 8. Configurar alias do Git (opcional) echo "8. Configurando alias do Git..." if git config --get alias.push-all &> /dev/null; then ok "Alias 'push-all' ja configurado" else git config alias.push-all '!git push origin main && git push forgejo main' ok "Alias 'push-all' criado (use: git push-all)" fi echo "" echo "=== Setup Concluido! ===" echo "" echo "Proximos passos:" echo " 1. Verifique/edite o arquivo .env" echo " 2. Execute: bun run dev:bun" echo " 3. Acesse: http://localhost:3000" echo " 4. Login: admin@sistema.dev / admin123" echo "" echo "Para fazer deploy:" echo " git push origin main && git push forgejo main" echo " ou: git push-all" echo ""