#!/usr/bin/env node

const readline = require('readline');
const { execSync } = require('child_process');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

const types = {
  'feat': 'Nova funcionalidade',
  'fix': 'Correção de bug',
  'docs': 'Documentação',
  'style': 'Formatação/estilo',
  'refactor': 'Refatoração',
  'test': 'Testes',
  'chore': 'Manutenção',
  'perf': 'Performance',
  'ci': 'CI/CD',
  'build': 'Build',
  'revert': 'Reverter'
};

console.log('🚀 Assistente de Commit\n');

console.log('📋 Tipos disponíveis:');
Object.entries(types).forEach(([key, desc], index) => {
  console.log(`${index + 1}. ${key.padEnd(8)} - ${desc}`);
});

rl.question('\n🏷️  Escolha o tipo (1-11): ', (typeChoice) => {
  const typeKeys = Object.keys(types);
  const type = typeKeys[parseInt(typeChoice) - 1];
  
  if (!type) {
    console.log('❌ Tipo inválido');
    process.exit(1);
  }

  rl.question('📦 Escopo (opcional): ', (scope) => {
    rl.question('📝 Descrição: ', (description) => {
      rl.question('📄 Corpo da mensagem (opcional): ', (body) => {
        
        const scopePart = scope ? `(${scope})` : '';
        const firstLine = `${type}${scopePart}: ${description}`;
        const fullMessage = body ? `${firstLine}\n\n${body}` : firstLine;
        
        console.log('\n📋 Mensagem de commit:');
        console.log('─'.repeat(50));
        console.log(fullMessage);
        console.log('─'.repeat(50));
        
        rl.question('\n✅ Confirmar commit? (y/N): ', (confirm) => {
          if (confirm.toLowerCase() === 'y') {
            try {
              execSync(`git commit -m "${fullMessage}"`, { stdio: 'inherit' });
              console.log('✅ Commit realizado com sucesso!');
            } catch (error) {
              console.log('❌ Erro no commit:', error.message);
            }
          } else {
            console.log('❌ Commit cancelado');
          }
          rl.close();
        });
      });
    });
  });
});
