UNPKG

api-scout

Version:

๐Ÿ” Automatically scout, discover and generate beautiful interactive API documentation from your codebase. Supports Express.js, NestJS, FastAPI, Spring Boot with interactive testing and security analysis.

54 lines (43 loc) โ€ข 2.32 kB
const chalk = require('chalk'); const ora = require('ora'); const APIDocsGenerator = require('../index'); module.exports = async function generateCommand(options) { const spinner = ora('๐Ÿ” Initializing API Scout...').start(); try { const generator = new APIDocsGenerator(options); spinner.text = '๐Ÿ•ต๏ธ Scouting codebase for API endpoints...'; const result = await generator.generate(); spinner.succeed(chalk.green('โœ… API documentation generated successfully!')); console.log(chalk.cyan('\n๐Ÿ“Š Scout Report:')); console.log(` โ€ข ${result.endpoints.length} API endpoints discovered`); console.log(` โ€ข ${result.frameworks.length} framework(s) detected: ${result.frameworks.join(', ')}`); console.log(` โ€ข Output directory: ${chalk.yellow(options.output)}`); if (result.security && result.security.recommendations?.length > 0) { const criticalIssues = result.security.recommendations.filter(r => r.priority === 'critical').length; const highIssues = result.security.recommendations.filter(r => r.priority === 'high').length; console.log(chalk.cyan('\n๐Ÿ” Security Analysis:')); if (criticalIssues > 0) { console.log(` โ€ข ${chalk.red(criticalIssues + ' critical security issue(s) found')}`); } if (highIssues > 0) { console.log(` โ€ข ${chalk.yellow(highIssues + ' high priority recommendation(s)')}`); } if (criticalIssues === 0 && highIssues === 0) { console.log(` โ€ข ${chalk.green('No critical security issues detected')}`); } } console.log(chalk.cyan('\n๐Ÿš€ Next steps:')); console.log(` โ€ข Serve docs: ${chalk.yellow('api-scout serve')}`); console.log(` โ€ข Watch mode: ${chalk.yellow('api-scout watch')}`); console.log(` โ€ข Interactive testing: Open docs and click ${chalk.yellow('"๐Ÿงช Test API"')} buttons`); } catch (error) { spinner.fail(chalk.red('โŒ Failed to generate documentation')); console.error(chalk.red('\nError details:')); console.error(error.message); if (error.stack && process.env.DEBUG) { console.error(chalk.gray('\nStack trace:')); console.error(error.stack); } process.exit(1); } };