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
JavaScript
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);
}
};