MCPcopy Index your code
hub / github.com/garrytan/gstack / runSetup

Function runSetup

make-pdf/src/setup.ts:21–110  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

19import { generate } from "./orchestrator";
20
21export async function runSetup(): Promise<void> {
22 process.stderr.write("make-pdf setup — verifying install\n\n");
23
24 // 1. Resolve browse binary
25 process.stderr.write(" [1/5] Checking browse binary...");
26 try {
27 const bin = browseClient.resolveBrowseBin();
28 process.stderr.write(` OK (${bin})\n`);
29 } catch (err: any) {
30 process.stderr.write(" FAIL\n");
31 process.stderr.write(`\n${err.message}\n`);
32 process.exit(4);
33 }
34
35 // 2. Chromium smoke (navigate a dedicated tab to about:blank)
36 process.stderr.write(" [2/5] Launching Chromium...");
37 let chromiumTab: number | null = null;
38 try {
39 chromiumTab = browseClient.newtab("about:blank");
40 process.stderr.write(` OK (tab ${chromiumTab})\n`);
41 } catch (err: any) {
42 process.stderr.write(" FAIL\n");
43 process.stderr.write(`\nChromium failed to launch: ${err.message}\n`);
44 process.stderr.write("\nTo fix: run gstack setup from the gstack repo:\n");
45 process.stderr.write(" cd ~/.claude/skills/gstack && ./setup\n");
46 process.exit(4);
47 } finally {
48 if (chromiumTab !== null) {
49 try { browseClient.closetab(chromiumTab); } catch { /* ignore */ }
50 }
51 }
52
53 // 3. pdftotext (optional — CI gate only)
54 process.stderr.write(" [3/5] Checking pdftotext (optional)...");
55 try {
56 const info = resolvePdftotext();
57 process.stderr.write(` OK (${info.flavor}, ${info.version.split(" ").slice(-1)[0] || "version unknown"})\n`);
58 } catch (err) {
59 process.stderr.write(" SKIP\n");
60 if (err instanceof PdftotextUnavailableError) {
61 process.stderr.write(
62 " pdftotext not installed. This is optional — only the CI\n" +
63 " copy-paste gate needs it. To enable:\n" +
64 " macOS: brew install poppler\n" +
65 " Ubuntu: sudo apt-get install poppler-utils\n",
66 );
67 }
68 }
69
70 // 4. Render smoke-test PDF
71 process.stderr.write(" [4/5] Generating smoke-test PDF...\n");
72 const fixture = [
73 "# Hello from make-pdf",
74 "",
75 "This is a two-paragraph smoke test. If you can read this sentence in the PDF that just opened, the pipeline works end-to-end.",
76 "",
77 "The second paragraph contains curly quotes (\"hello\"), an em dash -- like this, and an ellipsis... all of which should render correctly.",
78 "",

Callers 1

mainFunction · 0.70

Calls 2

resolvePdftotextFunction · 0.90
generateFunction · 0.90

Tested by

no test coverage detected