Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ On every build the plugin runs `scriptc coverage <entry> --print diagnostics` at
| `failOnBlockers` | `true` | Fail the bundler build when coverage finds blockers |
| `out` | `.scriptc/<name><suffix>` | `-o/--out` primary output path |
| `emit` | `"exe"` | `--emit`: ir, llvm, asm, obj, exe |
| `print` | , | `--print`: native-link-info or diagnostics |
| `backend` | , | `--backend` code generator |
| `optimization` | `"release"` | `--optimization`: release, dev, speed |
| `strip` | `false` | `--strip` symbol/debug payload |
Expand Down
1 change: 1 addition & 0 deletions docs/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Every `scriptc build` flag of the pinned release maps to a typed option. Flags a
| --- | --- | --- |
| `out` | `-o, --out` | Primary output path (default `.scriptc/<name><suffix>`) |
| `emit` | `--emit` | Primary output: `ir`, `llvm`, `asm`, `obj`, `exe` |
| `print` | `--print` | `native-link-info` (implies `--emit=obj`, no link) or `diagnostics` |
| `backend` | `--backend` | Code generator (`llvm`) |
| `optimization` | `--optimization` | `release` (-O2), `dev` (-O0 + breakpoints), `speed` (runtime inlining, inline RC) |
| `strip` | `--strip` | Remove symbol/debug payload |
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
"docs:build": "docmd build --cwd docs"
},
"dependencies": {
"@docmd/engine-rust": "0.9.7",
"unplugin": "^3.4.0"
},
"peerDependencies": {
Expand All @@ -52,6 +51,7 @@
},
"devDependencies": {
"@docmd/core": "^0.9.7",
"@docmd/engine-rust": "0.9.8",
"@types/node": "^24.0.0",
"oxfmt": "^0.17.0",
"oxlint": "^1.87.0",
Expand Down
79 changes: 43 additions & 36 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/scriptc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ export interface ScriptcBuildOptions {
out?: string;
// --emit: primary output kind (default exe). asm/obj need a platform helper.
emit?: "ir" | "llvm" | "asm" | "obj" | "exe";
// --print: machine-readable metadata instead of the output path.
// native-link-info implies --emit=obj and never links; diagnostics prints
// the versioned JSON diagnostics envelope.
print?: "native-link-info" | "diagnostics";
// --backend: code generator (llvm).
backend?: string;
// --optimization: release (default, -O2), dev (-O0 + breakpoints + cached
Expand Down Expand Up @@ -59,6 +63,7 @@ export function buildArgs(o: ScriptcBuildOptions, entry: string): string[] {
a.push(entry);
if (o.out !== undefined) a.push("--out", o.out);
if (o.emit !== undefined) a.push("--emit", o.emit);
if (o.print !== undefined) a.push("--print", o.print);
if (o.backend !== undefined) a.push("--backend", o.backend);
if (o.optimization !== undefined) a.push("--optimization", o.optimization);
if (o.strip === true) a.push("--strip");
Expand Down
15 changes: 15 additions & 0 deletions test/scriptc.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ test("buildArgs: scalar flags map one-to-one", () => {
]);
});

test("buildArgs: print selects a machine-readable output", () => {
assert.deepEqual(buildArgs({ print: "native-link-info" }, "e.ts"), [
"build",
"e.ts",
"--print",
"native-link-info",
]);
assert.deepEqual(buildArgs({ print: "diagnostics" }, "e.ts"), [
"build",
"e.ts",
"--print",
"diagnostics",
]);
});

test("buildArgs: keepLlvm default emits nothing, true emits --keep-llvm", () => {
assert.ok(!buildArgs({}, "e.ts").includes("--keep-llvm"));
assert.ok(!buildArgs({ keepLlvm: false }, "e.ts").includes("--keep-llvm"));
Expand Down
Loading