UNPKG

ctrlshiftleft

Version:

AI-powered toolkit for embedding QA and security testing into development workflows

65 lines 3.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checklistCommand = checklistCommand; const chalk_1 = __importDefault(require("chalk")); const ora_1 = __importDefault(require("ora")); const path_1 = __importDefault(require("path")); const promises_1 = __importDefault(require("fs/promises")); const checklistGenerator_1 = require("../core/checklistGenerator"); const fileUtils_1 = require("../utils/fileUtils"); function checklistCommand(program) { program .command('checklist') .description('Generate QA and security checklists from source code') .argument('<source>', 'Source file or directory to analyze') .option('-o, --output <file>', 'Output JSON file for generated checklist', './checklist.json') .option('-t, --type <type>', 'Type of checklist to generate (qa, security, all)', 'all') .option('--format <format>', 'Output format (json, markdown)', 'json') .action(async (source, options) => { const spinner = (0, ora_1.default)('Analyzing source code for checklist generation...').start(); try { // Validate source path if (!await (0, fileUtils_1.isValidSourcePath)(source)) { spinner.fail(`Invalid source path: ${source}`); return; } const absoluteSourcePath = path_1.default.resolve(process.cwd(), source); const outputFile = path_1.default.resolve(process.cwd(), options.output); const outputDir = path_1.default.dirname(outputFile); // Ensure output directory exists await (0, fileUtils_1.ensureDirectoryExists)(outputDir); // Initialize checklist generator const generator = new checklistGenerator_1.ChecklistGenerator({ type: options.type, format: options.format }); spinner.text = 'Generating checklist...'; const checklist = await generator.generateChecklist(absoluteSourcePath); // Write to output file await promises_1.default.writeFile(outputFile, JSON.stringify(checklist, null, 2), 'utf8'); spinner.succeed(`Successfully generated checklist in ${outputFile}`); console.log(`\n${chalk_1.default.green('✓')} Checklist contains ${checklist.items.length} items`); console.log(`${chalk_1.default.blue('Categories:')} ${checklist.categories.join(', ')}`); // Display sample items if (checklist.items.length > 0) { console.log(chalk_1.default.yellow('\nSample checklist items:')); const sampleItems = checklist.items.slice(0, 3); for (const item of sampleItems) { console.log(`${chalk_1.default.green('•')} ${item.title}`); } if (checklist.items.length > 3) { console.log(chalk_1.default.gray(`... and ${checklist.items.length - 3} more items`)); } } } catch (error) { spinner.fail(`Checklist generation failed: ${error.message}`); console.error(chalk_1.default.red(error.stack)); process.exit(1); } }); } //# sourceMappingURL=checklist.js.map