MCPcopy
hub / github.com/garrytan/gstack / main

Function main

make-pdf/src/cli.ts:193–273  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

191}
192
193async function main(): Promise<void> {
194 const parsed = parseArgs(process.argv);
195
196 if (!parsed.command) {
197 printUsage();
198 process.exit(ExitCode.BadArgs);
199 }
200
201 if (!COMMANDS.has(parsed.command)) {
202 console.error(`$P: unknown command: ${parsed.command}`);
203 console.error("");
204 printUsage();
205 process.exit(ExitCode.BadArgs);
206 }
207
208 try {
209 switch (parsed.command) {
210 case "version": {
211 // Read from VERSION file or fall back to a hard-coded default.
212 try {
213 const fs = await import("node:fs");
214 const path = await import("node:path");
215 const versionFile = path.resolve(
216 path.dirname(process.argv[1] || ""),
217 "../../VERSION",
218 );
219 const version = fs.readFileSync(versionFile, "utf8").trim();
220 console.log(version);
221 } catch {
222 console.log("make-pdf (version unknown)");
223 }
224 process.exit(ExitCode.Success);
225 }
226
227 case "setup": {
228 const { runSetup } = await import("./setup");
229 await runSetup();
230 process.exit(ExitCode.Success);
231 }
232
233 case "generate": {
234 const opts = generateOptionsFromFlags(parsed);
235 const { generate } = await import("./orchestrator");
236 const outputPath = await generate(opts);
237 // Contract: stdout = output path only
238 console.log(outputPath);
239 process.exit(ExitCode.Success);
240 }
241
242 case "preview": {
243 const opts = previewOptionsFromFlags(parsed);
244 const { preview } = await import("./orchestrator");
245 const htmlPath = await preview(opts);
246 console.log(htmlPath);
247 process.exit(ExitCode.Success);
248 }
249
250 default:

Callers 1

cli.tsFile · 0.70

Calls 7

generateOptionsFromFlagsFunction · 0.85
previewOptionsFromFlagsFunction · 0.85
previewFunction · 0.85
parseArgsFunction · 0.70
printUsageFunction · 0.70
runSetupFunction · 0.70
generateFunction · 0.70

Tested by

no test coverage detected