Files
scriptc/packages/cli/scripts/prepare-native.mjs
Chris Tate a1cae30f31 feat: ship the self-hosted native scriptc CLI
- Run the shared compiler and CLI natively, including library builds and compile-time evaluation.
- Install native platform packages and ship relocatable standalone distributions.
- Preserve program semantics and reuse validated build artifacts for fast rebuilds.
2026-09-30 01:25:58 -05:00

19 lines
912 B
JavaScript

import { mkdirSync, rmSync, writeFileSync } from "node:fs";
import { dirname, join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
export function prepareNativeCommand(directory) {
const bin = join(directory, "bin");
mkdirSync(bin, { recursive: true });
// npm creates bin links before postinstall. The payload must exist in the
// tarball, and no shebang may pin the Windows shim to an interpreter.
// Installation replaces this placeholder with the platform executable.
writeFileSync(join(bin, "scriptc.exe"),
"echo 'scriptc: native installation is incomplete; enable install scripts and reinstall scriptc' >&2\nexit 1\n", { mode: 0o755 });
rmSync(join(bin, "scriptc.exe.json"), { force: true });
}
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
prepareNativeCommand(resolve(dirname(fileURLToPath(import.meta.url)), ".."));
}