UNPKG

tscribe

Version:

CLI to dump TypeScript sources with headings for LLM ingestion

61 lines (60 loc) 2.29 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 chokidar_1 = __importDefault(require("chokidar")); const core_1 = require("./core"); const load_config_1 = require("./load-config"); const version_1 = require("./version"); const program = new commander_1.Command(); program .name("tscribe") .version(version_1.version, "-v, --version", "output the current version") .description("Concatenate TypeScript-family files with headings, ready for ingestion by LLMs.") .option("-s, --src <directory>", "root folder to scan", ".") .option("-o, --out <file>", "write output to a text file") .option("-e, --ext <list>", "comma-separated extensions", "ts,tsx") .option("--ignore <patterns>", "comma-separated ignore patterns", "node_modules,dist,.git") .option("--heading <template>", "heading template", "") .option("--format <type>", "heading format: md or plain", "md") .option("--sort <mode>", "sort files: alpha, path, or mtime", "path") .option("--list", "print file list only") .option("--watch", "watch for file changes") .option("--verbose", "print debug output") .option("--quiet", "suppress console logs") .parse(process.argv); const cliOpts = program.opts(); (async () => { try { const config = await (0, load_config_1.loadConfig)(); const opts = { ...config, ...cliOpts }; const run = async () => { try { await (0, core_1.tscribe)(opts); } catch (err) { console.error("❌ Runtime error:", err); process.exit(1); } }; if (opts.watch) { console.log("👀 Watching..."); chokidar_1.default .watch(opts.src, { ignored: opts.ignore.split(","), ignoreInitial: false, }) .on("all", run); } else { await run(); } } catch (err) { console.error("❌ Startup error:", err); process.exit(2); } })();