diff --git a/package.json b/package.json index 23ad0bad74..7463e7635b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "make-pdf": "./make-pdf/dist/pdf" }, "scripts": { - "build": "bun run vendor:xterm && bun run gen:skill-docs --host all; bun build --compile browse/src/cli.ts --outfile browse/dist/browse && bun build --compile browse/src/find-browse.ts --outfile browse/dist/find-browse && bun build --compile design/src/cli.ts --outfile design/dist/design && bun build --compile make-pdf/src/cli.ts --outfile make-pdf/dist/pdf && bun build --compile bin/gstack-global-discover.ts --outfile bin/gstack-global-discover && bash browse/scripts/build-node-server.sh && { git rev-parse HEAD 2>/dev/null || true; } > browse/dist/.version && { git rev-parse HEAD 2>/dev/null || true; } > design/dist/.version && { git rev-parse HEAD 2>/dev/null || true; } > make-pdf/dist/.version && chmod +x browse/dist/browse browse/dist/find-browse design/dist/design make-pdf/dist/pdf bin/gstack-global-discover && (rm -f .*.bun-build || true)", + "build": "bun run vendor:xterm && bun run gen:skill-docs --host all; bun build --compile browse/src/cli.ts --outfile browse/dist/browse && bun build --compile browse/src/find-browse.ts --outfile browse/dist/find-browse && bun build --compile design/src/cli.ts --outfile design/dist/design && bun build --compile make-pdf/src/cli.ts --outfile make-pdf/dist/pdf && bun build --compile bin/gstack-global-discover.ts --outfile bin/gstack-global-discover && bash browse/scripts/build-node-server.sh && node scripts/write-versions.mjs && chmod +x browse/dist/browse browse/dist/find-browse design/dist/design make-pdf/dist/pdf bin/gstack-global-discover", "vendor:xterm": "mkdir -p extension/lib && cp node_modules/xterm/lib/xterm.js extension/lib/xterm.js && cp node_modules/xterm/css/xterm.css extension/lib/xterm.css && cp node_modules/xterm-addon-fit/lib/xterm-addon-fit.js extension/lib/xterm-addon-fit.js", "dev:make-pdf": "bun run make-pdf/src/cli.ts", "dev:design": "bun run design/src/cli.ts", diff --git a/scripts/write-versions.mjs b/scripts/write-versions.mjs new file mode 100644 index 0000000000..a064cdd4f7 --- /dev/null +++ b/scripts/write-versions.mjs @@ -0,0 +1,37 @@ +#!/usr/bin/env node +// Write the current git HEAD SHA into the .version files for browse/design/ +// make-pdf compiled binaries. Replaces three `{ git rev-parse HEAD || true; } +// > FILE` brace-group + redirect constructs that bun-on-Windows can't parse. +// +// If git isn't available (rev-parse fails for any reason), write an empty +// .version — the file still needs to exist, but the SHA is best-effort. + +import { execSync } from "node:child_process"; +import { writeFileSync, mkdirSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +let sha = ""; +const root = fileURLToPath(new URL("..", import.meta.url)); + +try { + sha = execSync("git rev-parse HEAD", { + cwd: root, + stdio: ["ignore", "pipe", "ignore"], + }) + .toString() + .trim(); +} catch { + // Not in a git repo or git not on PATH. Leave sha empty. +} + +const dirs = ["browse/dist", "design/dist", "make-pdf/dist"]; +for (const dir of dirs) { + const full = path.join(root, dir); + try { + mkdirSync(full, { recursive: true }); + } catch { + // Directory probably exists; writeFileSync below will succeed. + } + writeFileSync(path.join(full, ".version"), sha + "\n"); +}