UNPKG

codesnap-analyzer

Version:

Create comprehensive snapshots of your codebase with token counting for LLMs

66 lines (65 loc) • 2.94 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const index_1 = require("./index"); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); async function main() { const program = new commander_1.Command(); program .name("codesnap") .description("Create a comprehensive snapshot of your codebase") .argument("[directory]", "Directory to analyze", ".") .option("-o, --output <path>", "Output file path") .option("-e, --exclude <patterns...>", "Additional patterns to exclude") .option("-i, --include <patterns...>", "Patterns to include") .action(async (directory, options) => { try { // Resolve project directory const projectDir = path_1.default.resolve(directory); let projectName = path_1.default.basename(projectDir); try { const packageJsonPath = path_1.default.join(projectDir, "package.json"); if (fs_extra_1.default.existsSync(packageJsonPath)) { const packageJson = JSON.parse(fs_extra_1.default.readFileSync(packageJsonPath, "utf-8")); projectName = packageJson.name || projectName; } } catch { // Fallback to folder name if package.json doesn't exist projectName = path_1.default.basename(projectDir); } // Sanitize project name for filenames projectName = projectName.replace(/[^a-zA-Z0-9-_]/g, "_"); // Default output path if not specified if (!options.output) { const outputDir = path_1.default.join(projectDir, "codesnap"); await fs_extra_1.default.ensureDir(outputDir); options.output = path_1.default.join(outputDir, `${projectName}.txt`); } console.log("šŸ“ø Starting CodeSnap analysis..."); console.log(`šŸ“ Project: ${projectName}`); console.log(`šŸ“‚ Directory: ${projectDir}`); console.log(`šŸ“ Output will be saved to: ${options.output}`); // Perform analysis const result = await (0, index_1.analyze)(projectDir, { output: options.output, exclude: options.exclude, include: options.include, }); console.log("\nāœ… Analysis completed successfully!"); console.log("šŸ“Š Summary:"); console.log(result.summary); } catch (error) { console.error(`\nāŒ Error: ${error.message}`); process.exit(1); } }); program.parse(); } main();