UNPKG

@project-halycon/folder-map

Version:

A CLI tool to generate markdown documentation of folder structures with optional code content inclusion

72 lines (63 loc) 2.23 kB
#!/usr/bin/env node import { program } from "commander"; import { generateStructure } from "./generateStructure.js"; import path from "path"; import fs from "fs"; program .version("1.0.0") .description("Generate markdown documentation of folder structure"); const commonOptions = (command) => { return command .option( "-i, --ignore <patterns...>", 'Patterns to ignore (e.g., "node_modules/**" "*.log")' ) .option("-o, --output <filename>", "Output file name") .option("-d, --depth <number>", "Maximum depth to traverse", parseInt) .option("-s, --size", "Include file sizes in the output", false) .option("-f, --format <type>", "Output format (md or txt)", "md") .option( "--include-sys-files", "Include system files and directories (.git, .next, etc.)", false ); }; commonOptions( program .command("structure") .description("Generate folder structure without file contents") ).action(async (options) => { const format = options.format || "md"; const defaultExt = format === "md" ? ".md" : ".txt"; const outputFile = options.output || `output${defaultExt}`; const output = await generateStructure(process.cwd(), { includeCode: false, ignorePatterns: options.ignore, maxDepth: options.depth || Infinity, showSize: options.size, format: format, includeSysFiles: options.includeSysFiles, }); fs.writeFileSync(outputFile, output); console.log(`Structure has been written to ${outputFile}`); }); commonOptions( program .command("structure-with-code") .description("Generate folder structure with file contents") ).action(async (options) => { const format = options.format || "md"; const defaultExt = format === "md" ? ".md" : ".txt"; const outputFile = options.output || `output${defaultExt}`; const output = await generateStructure(process.cwd(), { includeCode: true, ignorePatterns: options.ignore, maxDepth: options.depth || Infinity, showSize: options.size, format: format, includeSysFiles: options.includeSysFiles, }); fs.writeFileSync(outputFile, output); console.log(`Structure with code has been written to ${outputFile}`); }); program.parse(process.argv);