#!/bin/bash

################################################################################
# MEGACUBO v2.0 - Script de Instalação Final para cPanel
# Instala Node.js, npm, pnpm, dependências, compila e inicia a aplicação
################################################################################

set -e

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Configurações
APP_DIR="/home/megacubo/public_html"
NODE_VERSION="20.20.0"
NVM_DIR="$HOME/.nvm"

echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}🚀 MEGACUBO v2.0 - Instalação Final${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""

# ============================================================================
# 1. VERIFICAR DIRETÓRIO
# ============================================================================
echo -e "${YELLOW}[1/8] Verificando diretório...${NC}"
if [ ! -d "$APP_DIR" ]; then
    echo -e "${RED}✗ Diretório não encontrado: $APP_DIR${NC}"
    exit 1
fi
echo -e "${GREEN}✓ Diretório encontrado${NC}"
cd "$APP_DIR"
echo ""

# ============================================================================
# 2. INSTALAR NVM E NODE.JS
# ============================================================================
echo -e "${YELLOW}[2/8] Instalando Node.js...${NC}"

# Verificar se NVM já está instalado
if [ ! -s "$NVM_DIR/nvm.sh" ]; then
    echo "  → Baixando NVM..."
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash > /dev/null 2>&1
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
fi

# Carregar NVM
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Instalar Node.js
echo "  → Instalando Node.js $NODE_VERSION..."
nvm install $NODE_VERSION > /dev/null 2>&1
nvm use $NODE_VERSION > /dev/null 2>&1
nvm alias default $NODE_VERSION > /dev/null 2>&1

# Verificar instalação
NODE_VERSION_INSTALLED=$(node --version)
echo -e "${GREEN}✓ Node.js instalado: $NODE_VERSION_INSTALLED${NC}"
echo ""

# ============================================================================
# 3. INSTALAR PNPM
# ============================================================================
echo -e "${YELLOW}[3/8] Instalando pnpm...${NC}"
npm install -g pnpm > /dev/null 2>&1
PNPM_VERSION=$(pnpm --version)
echo -e "${GREEN}✓ pnpm instalado: $PNPM_VERSION${NC}"
echo ""

# ============================================================================
# 4. INSTALAR DEPENDÊNCIAS
# ============================================================================
echo -e "${YELLOW}[4/8] Instalando dependências...${NC}"
echo "  → Executando: pnpm install"
pnpm install --frozen-lockfile 2>&1 | tail -5
echo -e "${GREEN}✓ Dependências instaladas${NC}"
echo ""

# ============================================================================
# 5. COMPILAR PROJETO
# ============================================================================
echo -e "${YELLOW}[5/8] Compilando projeto...${NC}"
echo "  → Executando: pnpm build"
pnpm build 2>&1 | tail -10
if [ ! -f "dist/index.js" ]; then
    echo -e "${RED}✗ Erro: dist/index.js não foi criado${NC}"
    exit 1
fi
echo -e "${GREEN}✓ Projeto compilado com sucesso${NC}"
echo ""

# ============================================================================
# 6. INSTALAR PM2 (OPCIONAL)
# ============================================================================
echo -e "${YELLOW}[6/8] Instalando PM2...${NC}"
npm install -g pm2 > /dev/null 2>&1
echo -e "${GREEN}✓ PM2 instalado${NC}"
echo ""

# ============================================================================
# 7. CRIAR ARQUIVO .ENV
# ============================================================================
echo -e "${YELLOW}[7/8] Verificando arquivo .env...${NC}"
if [ ! -f ".env" ]; then
    echo "  → Criando arquivo .env..."
    cat > .env << 'EOF'
# MEGACUBO v2.0 - Configuração de Ambiente
NODE_ENV=production
PORT=3000

# Banco de Dados (Configure com suas credenciais)
DATABASE_URL="mysql://user:password@localhost:3306/megacubo_db"

# JWT Secret (Gere uma chave segura)
JWT_SECRET="sua_chave_secreta_aqui_mude_isso"

# OAuth (Configure com seus valores)
VITE_APP_ID="seu_app_id"
OAUTH_SERVER_URL="https://api.manus.im"
VITE_OAUTH_PORTAL_URL="https://oauth.manus.im"

# Manus APIs
BUILT_IN_FORGE_API_URL="https://api.manus.im"
BUILT_IN_FORGE_API_KEY="sua_chave_api"
VITE_FRONTEND_FORGE_API_URL="https://api.manus.im"
VITE_FRONTEND_FORGE_API_KEY="sua_chave_frontend"

# Informações do Proprietário
OWNER_NAME="Megacubo"
OWNER_OPEN_ID="seu_open_id"

# Título e Logo da Aplicação
VITE_APP_TITLE="MEGACUBO - Sua Plataforma de Vídeos"
VITE_APP_LOGO="https://cdn.example.com/logo.png"

# Analytics
VITE_ANALYTICS_ENDPOINT="https://analytics.manus.im"
VITE_ANALYTICS_WEBSITE_ID="seu_website_id"
EOF
    echo -e "${YELLOW}⚠️  Arquivo .env criado com valores padrão${NC}"
    echo -e "${YELLOW}    IMPORTANTE: Edite o arquivo .env com suas configurações reais${NC}"
else
    echo -e "${GREEN}✓ Arquivo .env já existe${NC}"
fi
echo ""

# ============================================================================
# 8. EXIBIR INSTRUÇÕES FINAIS
# ============================================================================
echo -e "${YELLOW}[8/8] Finalizando...${NC}"
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}✓ INSTALAÇÃO CONCLUÍDA COM SUCESSO!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""

echo -e "${BLUE}📋 PRÓXIMOS PASSOS:${NC}"
echo ""
echo "1. ${YELLOW}Configurar arquivo .env:${NC}"
echo "   nano .env"
echo ""
echo "2. ${YELLOW}Criar banco de dados MySQL:${NC}"
echo "   mysql -u root -p"
echo "   CREATE DATABASE megacubo_db CHARACTER SET utf8mb4;"
echo "   CREATE USER 'megacubo_user'@'localhost' IDENTIFIED BY 'senha';"
echo "   GRANT ALL PRIVILEGES ON megacubo_db.* TO 'megacubo_user'@'localhost';"
echo "   FLUSH PRIVILEGES;"
echo "   EXIT;"
echo ""
echo "3. ${YELLOW}Executar migrations:${NC}"
echo "   pnpm prisma migrate deploy"
echo ""
echo "4. ${YELLOW}Iniciar aplicação com PM2:${NC}"
echo "   pm2 start dist/index.js --name megacubo"
echo "   pm2 save"
echo "   pm2 startup"
echo ""
echo "5. ${YELLOW}Verificar status:${NC}"
echo "   pm2 status"
echo "   pm2 logs megacubo"
echo ""
echo "6. ${YELLOW}Configurar domínio no cPanel:${NC}"
echo "   - Acesse: https://cpanel.megacubo.com.br"
echo "   - Ferramentas → Setup Node.js App"
echo "   - Criar Aplicação"
echo "   - Raiz: /home/megacubo/public_html"
echo "   - URL: megacubo.com.br"
echo "   - Arquivo: dist/index.js"
echo ""
echo -e "${BLUE}📊 INFORMAÇÕES DO SERVIDOR:${NC}"
echo "   Node.js: $NODE_VERSION_INSTALLED"
echo "   npm: $(npm --version)"
echo "   pnpm: $PNPM_VERSION"
echo "   PM2: $(pm2 --version)"
echo "   Diretório: $APP_DIR"
echo ""
echo -e "${BLUE}📞 SUPORTE:${NC}"
echo "   Ver logs: pm2 logs megacubo"
echo "   Reiniciar: pm2 restart megacubo"
echo "   Parar: pm2 stop megacubo"
echo ""
