UNPKG

supernal-coding

Version:

Comprehensive development workflow CLI with kanban task management, project validation, git safety hooks, and cross-project distribution system

106 lines (89 loc) 3.15 kB
#!/usr/bin/env node const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); // Colors for output const colors = { red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m', blue: '\x1b[34m', purple: '\x1b[35m', cyan: '\x1b[36m', bold: '\x1b[1m', reset: '\x1b[0m' }; class DevTools { constructor() { this.scriptsDir = path.join(__dirname, 'dev-scripts'); } async findExcessiveLogs(options = {}) { const { maxRatio = '0.05', outputFile = 'logs/excessive-console-logs.txt' } = options; console.log(`${colors.blue}🔍 Finding files with excessive console logs...${colors.reset}`); console.log(`${colors.cyan}Max ratio: ${maxRatio} (${(parseFloat(maxRatio) * 100).toFixed(1)}%)${colors.reset}`); console.log(`${colors.cyan}Output file: ${outputFile}${colors.reset}`); const scriptPath = path.join(this.scriptsDir, 'find-excessive-logs.sh'); if (!fs.existsSync(scriptPath)) { console.error(`${colors.red}❌ Script not found: ${scriptPath}${colors.reset}`); process.exit(1); } try { const result = execSync(`bash "${scriptPath}" "${maxRatio}" "${outputFile}"`, { cwd: process.cwd(), stdio: 'inherit' }); console.log(`${colors.green}✅ Log analysis completed${colors.reset}`); console.log(`${colors.cyan}Results saved to: ${outputFile}${colors.reset}`); } catch (error) { console.error(`${colors.red}❌ Log analysis failed${colors.reset}`); process.exit(1); } } showHelp() { console.log(`${colors.bold}Supernal Coding Development Tools${colors.reset}`); console.log(''); console.log(`${colors.cyan}Available commands:${colors.reset}`); console.log(' find-logs [options] Find files with excessive console logs'); console.log(''); console.log(`${colors.cyan}find-logs options:${colors.reset}`); console.log(' --max-ratio <ratio> Maximum allowed ratio (default: 0.05)'); console.log(' --output <file> Output file path (default: logs/excessive-console-logs.txt)'); console.log(''); console.log(`${colors.cyan}Examples:${colors.reset}`); console.log(' sc dev find-logs --max-ratio 0.03 --output reports/logs.txt'); } } // Handle command line execution if (require.main === module) { const args = process.argv.slice(2); const devTools = new DevTools(); if (args.length === 0) { devTools.showHelp(); process.exit(0); } const command = args[0]; const options = {}; // Parse command line options for (let i = 1; i < args.length; i += 2) { if (args[i].startsWith('--')) { const key = args[i].substring(2).replace(/-/g, ''); const value = args[i + 1]; options[key] = value; } } switch (command) { case 'find-logs': devTools.findExcessiveLogs(options); break; case 'help': case '--help': case '-h': devTools.showHelp(); break; default: console.error(`${colors.red}❌ Unknown command: ${command}${colors.reset}`); devTools.showHelp(); process.exit(1); } } module.exports = DevTools;