Some checks failed
Atualiza docs/SETUP.md e scripts/setup-dev.sh com: - Instrucoes para configurar chave SSH - Opcao de usar Personal Access Token (PAT) - Comandos para clonar/configurar via SSH ou HTTPS - Script setup-dev.sh agora aceita --ssh para repo privado 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
252 lines
6.9 KiB
Bash
252 lines
6.9 KiB
Bash
#!/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 ""
|