#!/bin/bash # Script de setup para ambiente de desenvolvimento # Uso: ./scripts/setup-dev.sh [--ssh] # # Opcoes: # --ssh Configurar remotes usando SSH (para repositorio privado) set -e # Verificar se deve usar SSH USE_SSH=false if [ "$1" = "--ssh" ]; then USE_SSH=true fi echo "=== Setup do Ambiente de Desenvolvimento ===" echo "" # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' 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"; } info() { echo -e "${CYAN}[INFO]${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 # Verificar SSH key (se usando SSH) if [ "$USE_SSH" = true ]; then echo "" echo "1.1. Verificando chave SSH..." if [ -f "$HOME/.ssh/id_ed25519.pub" ] || [ -f "$HOME/.ssh/id_rsa.pub" ]; then ok "Chave SSH encontrada" echo " Certifique-se de que a chave esta adicionada no GitHub e Forgejo" else warn "Chave SSH nao encontrada!" echo "" echo " Para criar uma chave SSH:" echo " ssh-keygen -t ed25519 -C \"seu-email@exemplo.com\"" echo "" echo " Depois adicione a chave publica em:" echo " - GitHub: Settings > SSH and GPG keys > New SSH key" echo " - Forgejo: Settings > SSH / GPG Keys > Add Key" echo "" read -p " Deseja continuar mesmo assim? (s/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Ss]$ ]]; then exit 1 fi fi 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 # URLs dos remotes if [ "$USE_SSH" = true ]; then ORIGIN_URL="git@github.com:esdrasrenan/sistema-de-chamados.git" FORGEJO_URL="ssh://git@git.esdrasrenan.com.br:2222/esdras/sistema-de-chamados.git" info "Usando SSH para os remotes (repositorio privado)" else ORIGIN_URL="https://github.com/esdrasrenan/sistema-de-chamados.git" FORGEJO_URL="https://git.esdrasrenan.com.br/esdras/sistema-de-chamados.git" info "Usando HTTPS para os remotes (repositorio publico)" fi # Configurar/atualizar origin CURRENT_ORIGIN=$(git remote get-url origin 2>/dev/null || echo "") if [ "$CURRENT_ORIGIN" != "$ORIGIN_URL" ]; then if [ -n "$CURRENT_ORIGIN" ]; then git remote set-url origin "$ORIGIN_URL" ok "Remote 'origin' atualizado para $ORIGIN_URL" fi else ok "Remote 'origin' ja configurado corretamente" fi # Verificar/adicionar remote forgejo if git remote get-url forgejo &> /dev/null; then CURRENT_FORGEJO=$(git remote get-url forgejo) if [ "$CURRENT_FORGEJO" != "$FORGEJO_URL" ]; then git remote set-url forgejo "$FORGEJO_URL" ok "Remote 'forgejo' atualizado para $FORGEJO_URL" else ok "Remote 'forgejo' ja configurado corretamente" fi else git remote add forgejo "$FORGEJO_URL" 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 ""