UNPKG

@followthecode/cli

Version:

CLI tool for Git repository analysis and data collection

119 lines (101 loc) 4.18 kB
#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); console.log('🔧 Configurando wrapper do FTC CLI...'); // Detecta a plataforma const platform = process.platform; const isWindows = platform === 'win32'; // Verifica se o Node.js está disponível function checkNodeAvailability() { try { execSync('node --version', { stdio: 'pipe' }); return true; } catch (error) { return false; } } // Caminhos dos wrappers const ftcJsPath = path.join(__dirname, '..', 'bin', 'ftc.js'); const ftcShellPath = path.join(__dirname, '..', 'bin', 'ftc'); // Verifica qual wrapper usar const nodeAvailable = checkNodeAvailability(); const ftcJsExists = fs.existsSync(ftcJsPath); const ftcShellExists = fs.existsSync(ftcShellPath); console.log(`📋 Detecção de ambiente:`); console.log(` Plataforma: ${platform}`); console.log(` Node.js disponível: ${nodeAvailable ? '✅ Sim' : '❌ Não'}`); console.log(` Wrapper Node.js: ${ftcJsExists ? '✅ Existe' : '❌ Não existe'}`); console.log(` Wrapper Shell: ${ftcShellExists ? '✅ Existe' : '❌ Não existe'}`); // Recomenda o wrapper apropriado if (nodeAvailable && ftcJsExists) { console.log('✅ Usando wrapper Node.js (ftc.js)'); console.log('💡 Execute: ftc --help'); } else if (ftcShellExists) { console.log('✅ Usando wrapper Shell (ftc)'); console.log('💡 Execute: ftc --help'); if (!nodeAvailable) { console.log('⚠️ Node.js não encontrado, usando wrapper shell como fallback'); } } else { console.error('❌ Nenhum wrapper disponível!'); console.error('💡 Certifique-se de que o projeto foi compilado corretamente.'); process.exit(1); } // Define permissões para os wrappers if (ftcJsExists) { try { fs.chmodSync(ftcJsPath, 0o755); console.log('✅ Permissões definidas para ftc.js'); } catch (error) { console.warn('⚠️ Não foi possível definir permissões para ftc.js:', error.message); } } if (ftcShellExists) { try { fs.chmodSync(ftcShellPath, 0o755); console.log('✅ Permissões definidas para ftc (shell)'); } catch (error) { console.warn('⚠️ Não foi possível definir permissões para ftc (shell):', error.message); } } // Copia arquivo de configuração para o diretório de instalação global function copyConfigFile() { try { // Tenta diferentes locais para o arquivo de configuração const possibleSources = [ path.join(__dirname, '..', 'bin', 'linux-x64', 'appsettings.json'), path.join(__dirname, '..', 'bin', 'win-x64', 'appsettings.json'), path.join(__dirname, '..', 'bin', 'osx-x64', 'appsettings.json'), path.join(__dirname, '..', 'appsettings.json') ]; let configSource = null; for (const source of possibleSources) { if (fs.existsSync(source)) { configSource = source; break; } } if (!configSource) { console.warn('⚠️ Arquivo de configuração não encontrado em nenhum local'); return; } // Copia para múltiplos locais para garantir que funcione const destinations = [ path.join(__dirname, '..', 'appsettings.json'), // Raiz do pacote path.join(process.cwd(), 'appsettings.json') // Diretório atual ]; for (const dest of destinations) { try { fs.copyFileSync(configSource, dest); console.log(`✅ Arquivo de configuração copiado para: ${dest}`); } catch (error) { console.warn(`⚠️ Erro ao copiar para ${dest}:`, error.message); } } } catch (error) { console.warn('⚠️ Erro ao copiar arquivo de configuração:', error.message); } } copyConfigFile(); console.log('🎉 Configuração concluída!');