Skip to content

Commit e67cad3

Browse files
authored
chore: Add a flag to allow an alternate component adapter to be specified (#616)
1 parent 7a3f6c3 commit e67cad3

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

js-compute-runtime-cli.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const {
1010
wasmEngine,
1111
input,
1212
component,
13+
adapter,
1314
output,
1415
version,
1516
help
@@ -30,7 +31,7 @@ if (version) {
3031
await compileApplicationToWasm(input, output, wasmEngine, enableExperimentalHighResolutionTimeMethods);
3132
if (component) {
3233
const {compileComponent} = await import('./src/component.js');
33-
await compileComponent(output);
34+
await compileComponent(output, adapter);
3435
}
3536
await addSdkMetadataField(output);
3637
}

src/component.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { componentNew, preview1AdapterReactorPath } from '@bytecodealliance/jco';
22
import { readFile, writeFile } from 'node:fs/promises';
33

4-
export async function compileComponent (path) {
4+
export async function compileComponent (path, adapter) {
55
const coreComponent = await readFile(path);
6-
const generatedComponent = await componentNew(coreComponent, [['wasi_snapshot_preview1', await readFile(preview1AdapterReactorPath())]]);
6+
if (!adapter) {
7+
adapter = preview1AdapterReactorPath();
8+
}
9+
const generatedComponent = await componentNew(coreComponent, [['wasi_snapshot_preview1', await readFile(adapter)]]);
710
await writeFile(path, generatedComponent);
811
}

src/parseInputs.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export async function parseInputs(cliInputs) {
77
const __dirname = dirname(fileURLToPath(import.meta.url));
88

99
let component = false;
10+
let adapter;
1011
let enableExperimentalHighResolutionTimeMethods = false;
1112
let customEngineSet = false;
1213
let wasmEngine = join(__dirname, "../js-compute-runtime.wasm");
@@ -15,6 +16,12 @@ export async function parseInputs(cliInputs) {
1516
let customOutputSet = false;
1617
let output = join(process.cwd(), "bin/main.wasm");
1718
let cliInput;
19+
20+
let useComponent = () => {
21+
component = true;
22+
wasmEngine = join(__dirname, "../js-compute-runtime-component.wasm");
23+
};
24+
1825
// eslint-disable-next-line no-cond-assign
1926
loop: while ((cliInput = cliInputs.shift())) {
2027
switch (cliInput) {
@@ -34,8 +41,12 @@ export async function parseInputs(cliInputs) {
3441
return { help: true };
3542
}
3643
case "--component": {
37-
component = true;
38-
wasmEngine = join(__dirname, "../js-compute-runtime-component.wasm");
44+
useComponent();
45+
break;
46+
}
47+
case "--component-adapter": {
48+
useComponent();
49+
adapter = cliInputs.shift();
3950
break;
4051
}
4152
case "--engine-wasm": {
@@ -93,5 +104,5 @@ export async function parseInputs(cliInputs) {
93104
}
94105
}
95106
}
96-
return { wasmEngine, component, input, output, enableExperimentalHighResolutionTimeMethods };
107+
return { wasmEngine, component, adapter, input, output, enableExperimentalHighResolutionTimeMethods };
97108
}

0 commit comments

Comments
 (0)