UNPKG

agentsqripts

Version:

Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems

98 lines (88 loc) 2.94 kB
/** * @file Centralized help system providing consistent CLI documentation across all analysis tools * @description Single responsibility: Generate standardized help output with flexible formatting options * * This help formatter module ensures consistent documentation presentation across all * AgentSqripts CLI tools while providing flexible configuration for tool-specific content. * It implements standardized sections (options, examples, output descriptions) with * customizable additional sections to accommodate different analysis tool requirements. * * Design rationale: * - Consistent help formatting reduces learning curve across multiple CLI tools * - Flexible section system accommodates tool-specific documentation requirements * - Standardized layout improves user experience and command discoverability * - Configuration-driven approach enables easy maintenance and updates * - Function factory pattern enables both direct usage and pre-configured help functions */ /** * Format and display help information for CLI tools * @param {Object} config - Help configuration * @param {string} config.command - Command name * @param {string} config.description - Tool description * @param {Array} config.options - Array of option objects * @param {string} config.modes - Analysis modes description * @param {Array} config.examples - Example usage strings * @param {string} config.output - Output description * @param {Object} config.sections - Additional sections (e.g., issue types, categories) */ function showHelp(config) { const { command, description, options = [], modes, examples = [], output, sections = {} } = config; // Header console.log(`Usage: node ${command} [OPTIONS] <path>\n`); // Description console.log(`${description}\n`); // Options if (options.length > 0) { console.log('OPTIONS:'); options.forEach(opt => { console.log(` ${opt.flag.padEnd(24)} ${opt.description}`); }); console.log(''); } // Modes if (modes) { console.log('Analysis Modes:'); console.log(modes); console.log(''); } // Examples if (examples.length > 0) { console.log('Examples:'); examples.forEach(example => { console.log(` ${example}`); }); console.log(''); } // Output description if (output) { console.log('OUTPUT:'); console.log(output); console.log(''); } // Additional sections (issue types, categories, etc.) Object.entries(sections).forEach(([title, content]) => { console.log(`${title}:`); console.log(content); console.log(''); }); } /** * Create a showHelp function with predefined configuration * @param {Object} config - Help configuration * @returns {Function} Configured showHelp function */ function createHelpFunction(config) { return () => showHelp(config); } module.exports = { showHelp, createHelpFunction };