tscribe
Version:
CLI to dump TypeScript sources with headings for LLM ingestion
61 lines (60 loc) • 2.29 kB
JavaScript
;
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);
}
})();