Skip to content

Commit 54c6d0a

Browse files
committed
feat(cli): add exec subcommand
1 parent c4aae01 commit 54c6d0a

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

packages/cli/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
"@endo/lockdown": "^0.1.14",
3131
"@endo/where": "^0.2.8",
3232
"commander": "^5.0.0",
33+
"endo-exec": "^0.1.0",
34+
"import-meta-resolve": "^2.0.3",
3335
"ses": "^0.15.16"
3436
},
3537
"devDependencies": {

packages/cli/src/endo.js

+19
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import fs from 'fs';
99
import path from 'path';
1010
import url from 'url';
1111
import crypto from 'crypto';
12+
import { fork } from 'child_process';
13+
import { moduleResolve } from 'import-meta-resolve';
1214

1315
import { Command } from 'commander';
1416
import { start, stop, restart, clean, reset } from '@endo/daemon';
@@ -66,6 +68,23 @@ export const main = async rawArgs => {
6668
console.log(cachePath);
6769
});
6870

71+
program
72+
.command('exec -- <script> [args...]')
73+
.action(async (script, args, _cmd) => {
74+
const u = moduleResolve('endo-exec/endo-exec.cjs', import.meta.url);
75+
const endoExec = url.fileURLToPath(u);
76+
return new Promise((resolve, reject) => {
77+
const cp = fork(endoExec, [script, ...args], {
78+
stdio: 'inherit',
79+
});
80+
cp.on('error', reject);
81+
cp.on('close', code => {
82+
process.exitCode = code;
83+
resolve(code);
84+
});
85+
});
86+
});
87+
6988
program.command('start').action(async _cmd => {
7089
await start();
7190
});

yarn.lock

+35-1
Original file line numberDiff line numberDiff line change
@@ -3341,6 +3341,13 @@ builtins@^1.0.3:
33413341
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
33423342
integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
33433343

3344+
builtins@^5.0.0:
3345+
version "5.0.1"
3346+
resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9"
3347+
integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==
3348+
dependencies:
3349+
semver "^7.0.0"
3350+
33443351
byline@^5.0.0:
33453352
version "5.0.0"
33463353
resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
@@ -4818,6 +4825,11 @@ dom-serializer@0:
48184825
domelementtype "^2.0.1"
48194826
entities "^2.0.0"
48204827

4828+
dom-walk@^0.1.0:
4829+
version "0.1.2"
4830+
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
4831+
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
4832+
48214833
domain-browser@^1.1.1, domain-browser@^1.2.0:
48224834
version "1.2.0"
48234835
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -6226,6 +6238,14 @@ global-prefix@^3.0.0:
62266238
kind-of "^6.0.2"
62276239
which "^1.3.1"
62286240

6241+
global@^4.4.0:
6242+
version "4.4.0"
6243+
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
6244+
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
6245+
dependencies:
6246+
min-document "^2.19.0"
6247+
process "^0.11.10"
6248+
62296249
globals@^11.1.0:
62306250
version "11.12.0"
62316251
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -6731,6 +6751,13 @@ import-local@^3.0.2:
67316751
pkg-dir "^4.2.0"
67326752
resolve-cwd "^3.0.0"
67336753

6754+
import-meta-resolve@^2.0.3:
6755+
version "2.0.3"
6756+
resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-2.0.3.tgz#117f3dc9a6415e82c32530545e1cf91be5c0a5d1"
6757+
integrity sha512-fpAppnBpZ3ymQ/dPP97TNsco1HB5+V9SYJ3chY50PP8xn4U/w+Y6ovWBmTImB/prmGsTjzPh8pQYY+EVBlr9mw==
6758+
dependencies:
6759+
builtins "^5.0.0"
6760+
67346761
imurmurhash@^0.1.4:
67356762
version "0.1.4"
67366763
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -8375,6 +8402,13 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
83758402
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
83768403
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
83778404

8405+
min-document@^2.19.0:
8406+
version "2.19.0"
8407+
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
8408+
integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==
8409+
dependencies:
8410+
dom-walk "^0.1.0"
8411+
83788412
min-indent@^1.0.0:
83798413
version "1.0.1"
83808414
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@@ -10988,7 +11022,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
1098811022
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1098911023
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1099011024

10991-
semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.7:
11025+
semver@^7.0.0, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.7:
1099211026
version "7.3.7"
1099311027
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
1099411028
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==

0 commit comments

Comments
 (0)