@usine/server 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -21
- package/README.md +54 -20
- package/dist/backend.d.ts +26 -5
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +41 -16
- package/dist/backend.js.map +1 -1
- package/dist/backup.d.ts +6 -3
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +26 -8
- package/dist/backup.js.map +1 -1
- package/dist/cli.d.ts +77 -11
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +280 -31
- package/dist/cli.js.map +1 -1
- package/dist/command.d.ts +22 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/command.js +51 -0
- package/dist/command.js.map +1 -0
- package/dist/detach.d.ts +83 -0
- package/dist/detach.d.ts.map +1 -0
- package/dist/detach.js +320 -0
- package/dist/detach.js.map +1 -0
- package/dist/export-run.d.ts +1 -1
- package/dist/export-run.d.ts.map +1 -1
- package/dist/export-run.js +3 -3
- package/dist/export-run.js.map +1 -1
- package/dist/failure-message.d.ts +19 -0
- package/dist/failure-message.d.ts.map +1 -0
- package/dist/failure-message.js +127 -0
- package/dist/failure-message.js.map +1 -0
- package/dist/http.d.ts +14 -5
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +86 -33
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/instance/environment.d.ts +17 -0
- package/dist/instance/environment.d.ts.map +1 -0
- package/dist/instance/environment.js +51 -0
- package/dist/instance/environment.js.map +1 -0
- package/dist/instance/id.d.ts +17 -0
- package/dist/instance/id.d.ts.map +1 -0
- package/dist/instance/id.js +35 -0
- package/dist/instance/id.js.map +1 -0
- package/dist/instance/lock.d.ts +27 -0
- package/dist/instance/lock.d.ts.map +1 -0
- package/dist/instance/lock.js +127 -0
- package/dist/instance/lock.js.map +1 -0
- package/dist/instance/manifest.d.ts +52 -0
- package/dist/instance/manifest.d.ts.map +1 -0
- package/dist/instance/manifest.js +131 -0
- package/dist/instance/manifest.js.map +1 -0
- package/dist/instance/operator-api.d.ts +30 -0
- package/dist/instance/operator-api.d.ts.map +1 -0
- package/dist/instance/operator-api.js +47 -0
- package/dist/instance/operator-api.js.map +1 -0
- package/dist/instance/ports.d.ts +23 -0
- package/dist/instance/ports.d.ts.map +1 -0
- package/dist/instance/ports.js +81 -0
- package/dist/instance/ports.js.map +1 -0
- package/dist/instance/record.d.ts +82 -0
- package/dist/instance/record.d.ts.map +1 -0
- package/dist/instance/record.js +116 -0
- package/dist/instance/record.js.map +1 -0
- package/dist/instance/state.d.ts +45 -0
- package/dist/instance/state.d.ts.map +1 -0
- package/dist/instance/state.js +79 -0
- package/dist/instance/state.js.map +1 -0
- package/dist/instance/systemd.d.ts +36 -0
- package/dist/instance/systemd.d.ts.map +1 -0
- package/dist/instance/systemd.js +61 -0
- package/dist/instance/systemd.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +27 -0
- package/dist/logger.js.map +1 -0
- package/dist/main.js +38 -18
- package/dist/main.js.map +1 -1
- package/dist/registry.d.ts +20 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +37 -0
- package/dist/registry.js.map +1 -0
- package/dist/reload-signal.d.ts +8 -0
- package/dist/reload-signal.d.ts.map +1 -0
- package/dist/reload-signal.js +21 -0
- package/dist/reload-signal.js.map +1 -0
- package/dist/restart.d.ts +19 -0
- package/dist/restart.d.ts.map +1 -0
- package/dist/restart.js +105 -0
- package/dist/restart.js.map +1 -0
- package/dist/shutdown.d.ts +5 -2
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +11 -5
- package/dist/shutdown.js.map +1 -1
- package/dist/status.d.ts +12 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +99 -0
- package/dist/status.js.map +1 -0
- package/dist/stop.d.ts +81 -0
- package/dist/stop.d.ts.map +1 -0
- package/dist/stop.js +195 -0
- package/dist/stop.js.map +1 -0
- package/dist/system-sleep.d.ts +9 -0
- package/dist/system-sleep.d.ts.map +1 -0
- package/dist/system-sleep.js +42 -0
- package/dist/system-sleep.js.map +1 -0
- package/dist/tracing.d.ts +22 -0
- package/dist/tracing.d.ts.map +1 -0
- package/dist/tracing.js +61 -0
- package/dist/tracing.js.map +1 -0
- package/dist/up.d.ts +2 -2
- package/dist/up.d.ts.map +1 -1
- package/dist/up.js +62 -24
- package/dist/up.js.map +1 -1
- package/dist/upgrade.d.ts +58 -0
- package/dist/upgrade.d.ts.map +1 -0
- package/dist/upgrade.js +237 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/web/assets/CompositeItem-DU6IyNMY.js +1 -0
- package/dist/web/assets/ToolbarRootContext-Cytu6o2e.js +1 -0
- package/dist/web/assets/X.es-B7iqdxa_.js +1 -0
- package/dist/web/assets/_agent-BVKD5odk.js +1 -0
- package/dist/web/assets/_loop-BFLzamuo.js +1 -0
- package/dist/web/assets/_name-Bh4AQ9sR.js +6 -0
- package/dist/web/assets/_name-CMVsmWzq.js +1 -0
- package/dist/web/assets/_name-DCkgEma_.js +1 -0
- package/dist/web/assets/_name-Ds_pWi15.js +1 -0
- package/dist/web/assets/_number-B9aYwvcQ.js +1 -0
- package/dist/web/assets/_run-BZWt47QS.js +8 -0
- package/dist/web/assets/_worker-Dgfufm5p.js +1 -0
- package/dist/web/assets/action-rCd1FeAz.js +1 -0
- package/dist/web/assets/agents-Drbg6qpH.js +1 -0
- package/dist/web/assets/agents-_6-dEjrY.js +1 -0
- package/dist/web/assets/button-DVWXde__.js +1 -0
- package/dist/web/assets/collapsible-IOhZV1qg.js +1 -0
- package/dist/web/assets/core-wi-Hu_JV.js +12 -0
- package/dist/web/assets/drawer-BiqnR_8i.js +1 -0
- package/dist/web/assets/dropdown-menu-C9D1kRkO.js +1 -0
- package/dist/web/assets/edit-and-retry-BgOR6mvP.js +1 -0
- package/dist/web/assets/engine-javascript-D-6se_EF.js +141 -0
- package/dist/web/assets/error-alert-9tKpTE3v.js +1 -0
- package/dist/web/assets/file-error-SjG2jLJ9.js +1 -0
- package/dist/web/assets/fill-cell-ClM88KFD.js +1 -0
- package/dist/web/assets/heading-lX1a1LNN.js +1 -0
- package/dist/web/assets/index-BymNZU1Q.js +10 -0
- package/dist/web/assets/index-Dyjfp3ET.css +2 -0
- package/dist/web/assets/inter-cyrillic-ext-opsz-normal-CfYZpDVp.woff2 +0 -0
- package/dist/web/assets/inter-cyrillic-opsz-normal-BFQXbQ-f.woff2 +0 -0
- package/dist/web/assets/inter-greek-ext-opsz-normal-BmPQvyvo.woff2 +0 -0
- package/dist/web/assets/inter-greek-opsz-normal-BM0NlUE_.woff2 +0 -0
- package/dist/web/assets/inter-latin-ext-opsz-normal-DpK-iCPk.woff2 +0 -0
- package/dist/web/assets/inter-latin-opsz-normal-BwkfbSeq.woff2 +0 -0
- package/dist/web/assets/inter-vietnamese-opsz-normal-Ci9T9ieq.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/dist/web/assets/label-badge-aIGT1Bry.js +1 -0
- package/dist/web/assets/list-v8WJp2Eq.js +1 -0
- package/dist/web/assets/loops-BFoFf_og.js +1 -0
- package/dist/web/assets/mark-CC3RwMy_.js +1 -0
- package/dist/web/assets/markdown-BnyfnuCL.js +29 -0
- package/dist/web/assets/matchContext-BquevSJS.js +2 -0
- package/dist/web/assets/model-BerBT6R0.js +1 -0
- package/dist/web/assets/moves-Dg9sshX5.js +1 -0
- package/dist/web/assets/overview-C_tFKGZ8.js +1 -0
- package/dist/web/assets/page-DWnGi6wA.js +301 -0
- package/dist/web/assets/project-not-found-CodaBVdu.js +1 -0
- package/dist/web/assets/pull-request-marks-DE00nqGW.js +1 -0
- package/dist/web/assets/queries-B1SHA_r4.js +1 -0
- package/dist/web/assets/reload-Dsl0zjJ7.js +1 -0
- package/dist/web/assets/repositories-BdxmD192.js +1 -0
- package/dist/web/assets/repositories-D4wYJfa_.js +1 -0
- package/dist/web/assets/route-B_gphTYG.js +1 -0
- package/dist/web/assets/route-Cc7dKnn5.js +1 -0
- package/dist/web/assets/routes-BLy5TGH_.js +65 -0
- package/dist/web/assets/run-again-BTKagSXR.js +1 -0
- package/dist/web/assets/section-B3pWIIBa.js +1 -0
- package/dist/web/assets/section-CD-MB5r3.js +1 -0
- package/dist/web/assets/section-Id99HktI.js +1 -0
- package/dist/web/assets/settings-YrDysQXW.js +1 -0
- package/dist/web/assets/slots-BraHmbNr.js +1 -0
- package/dist/web/assets/status-badge-DnvNo1tG.js +1 -0
- package/dist/web/assets/strings-CW2XaR5f.js +1 -0
- package/dist/web/assets/table-BjyI4fVI.js +1 -0
- package/dist/web/assets/tasks-DCL8kLmD.js +1 -0
- package/dist/web/assets/transcript-sxRJzx6t.js +5 -0
- package/dist/web/assets/usage-CLQJdX9-.js +1 -0
- package/dist/web/assets/use-now-0P8TUXeg.js +1 -0
- package/dist/web/assets/useAnchoredPopupScrollLock-CQ83Wy-r.js +1 -0
- package/dist/web/assets/useNavigate-BW1WdocJ.js +1 -0
- package/dist/web/assets/usePositioner-rNCxnHO-.js +1 -0
- package/dist/web/assets/useTimeout-_TcdZXP6.js +1 -0
- package/dist/web/assets/with-selector-DoElmmtd.js +1 -0
- package/dist/web/assets/workers-BH5CBOR3.js +1 -0
- package/dist/web/index.html +16 -10
- package/package.json +17 -12
- package/dist/web/assets/_name-DdyMEUN6.js +0 -6
- package/dist/web/assets/_name-eoobiMh0.js +0 -1
- package/dist/web/assets/_name-pUxlKZt5.js +0 -1
- package/dist/web/assets/badge-t7m0Vk1K.js +0 -146
- package/dist/web/assets/button-BoOukj77.js +0 -1
- package/dist/web/assets/core-CLXRiB63.js +0 -12
- package/dist/web/assets/empty-DbVYU7bi.js +0 -1
- package/dist/web/assets/engine-javascript-h-x4hGa4.js +0 -141
- package/dist/web/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/web/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/web/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/web/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/web/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
- package/dist/web/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
- package/dist/web/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
- package/dist/web/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/web/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
- package/dist/web/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
- package/dist/web/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/web/assets/index-CVBBoW6r.css +0 -2
- package/dist/web/assets/index-CsW8KcJW.js +0 -10
- package/dist/web/assets/loops-DghpuoiG.js +0 -1
- package/dist/web/assets/operator-copy-DIsVXn17.js +0 -1
- package/dist/web/assets/overview-DmCIVPwN.js +0 -1
- package/dist/web/assets/rolldown-runtime-hePW80VL.js +0 -1
- package/dist/web/assets/routes-BDyP7vCr.js +0 -1
- package/dist/web/assets/run-drawer-B-xhTXe4.js +0 -157
- package/dist/web/assets/status-badge-yblcElE0.js +0 -1
- package/dist/web/assets/table-B8cLYNvq.js +0 -1
- package/dist/web/assets/useCompositeItem-HmBmWxUW.js +0 -1
- package/dist/web/assets/with-selector-N6m4X0X_.js +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
|
+
import { createServer } from "node:net";
|
|
1
2
|
import { tmpdir } from "node:os";
|
|
2
3
|
import { resolve, sep } from "node:path";
|
|
3
4
|
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { RunId } from "@usine/core/run";
|
|
5
|
-
import { Console, Duration, Effect, FileSystem, Option, Schema } from "effect";
|
|
6
|
-
import { ChildProcess, ChildProcessSpawner } from "effect/
|
|
6
|
+
import { Array as Arr, Console, Duration, Effect, FileSystem, Option, Schema } from "effect";
|
|
7
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
7
8
|
export const DEFAULT_PORT = 7_331;
|
|
9
|
+
/** The address that the HTTP server listens on and the port check probes. */
|
|
10
|
+
export const SERVER_HOST = "127.0.0.1";
|
|
8
11
|
export const BROWSER_OPEN_TIMEOUT = "2 seconds";
|
|
12
|
+
const PORT_HOLDER_TIMEOUT = "2 seconds";
|
|
9
13
|
export const Port = Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65_535 }, { message: "Expected a TCP port" })).pipe(Schema.brand("ServerPort"));
|
|
10
14
|
const PortFromString = Schema.NumberFromString.pipe(Schema.decodeTo(Port));
|
|
15
|
+
/**
|
|
16
|
+
* The origin of the UI's pages behind a proxy, such as the HTTPS URL at which `tailscale serve`
|
|
17
|
+
* publishes the UI: an `http` or `https` scheme, a host, and a port other than the scheme's
|
|
18
|
+
* default, as a browser writes it in the `Origin` header.
|
|
19
|
+
*/
|
|
20
|
+
export const UiOrigin = Schema.String.check(Schema.makeFilter((origin) => URL.canParse(origin) &&
|
|
21
|
+
["http:", "https:"].includes(new URL(origin).protocol) &&
|
|
22
|
+
new URL(origin).origin === origin, { message: "Expected an http or https origin, such as https://orchestrator.example.ts.net" })).pipe(Schema.brand("UiOrigin"));
|
|
23
|
+
/** The minimum level of the lines `usine up` logs. */
|
|
24
|
+
export const UpLogLevel = Schema.Literals(["Trace", "Debug", "Info", "Warn", "Error"]);
|
|
25
|
+
export const DEFAULT_LOG_LEVEL = "Info";
|
|
26
|
+
const LogLevelName = Schema.Literals(["trace", "debug", "info", "warn", "error"]);
|
|
27
|
+
const LOG_LEVEL_NAMES = {
|
|
28
|
+
trace: "Trace",
|
|
29
|
+
debug: "Debug",
|
|
30
|
+
info: "Info",
|
|
31
|
+
warn: "Warn",
|
|
32
|
+
error: "Error",
|
|
33
|
+
};
|
|
34
|
+
export const DEFAULT_LIFECYCLE_TIMEOUT_SECONDS = 120;
|
|
11
35
|
export const CLI_USAGE = `Usage:
|
|
12
|
-
usine up [--port <port>] [--allow-volatile-instance]
|
|
36
|
+
usine up [--port <port>] [--origin <url>] [--log-level <level>] [--allow-volatile-instance] [--detach]
|
|
37
|
+
usine status
|
|
38
|
+
usine stop [--timeout <seconds>] [--force]
|
|
39
|
+
usine restart [--timeout <seconds>] [--force]
|
|
40
|
+
usine upgrade [<version>] [--check] [--timeout <seconds>] [--force]
|
|
13
41
|
usine backup <path>
|
|
14
42
|
usine export-run <runId> [--output <path>]
|
|
15
43
|
usine --help
|
|
@@ -17,23 +45,38 @@ export const CLI_USAGE = `Usage:
|
|
|
17
45
|
|
|
18
46
|
Options:
|
|
19
47
|
-p, --port <port> Listen on this port (default: 7331)
|
|
20
|
-
--
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
48
|
+
--origin <url> Also accept the UI's pages at this origin, such as the URL of tailscale serve
|
|
49
|
+
--log-level <level> Log at this level and above: trace, debug, info, warn, or error (default: info)
|
|
50
|
+
--allow-volatile-instance Start even when the instance folder is in a temporary directory
|
|
51
|
+
--detach Start in the background, with the output in .usine/usine.log
|
|
52
|
+
--timeout <seconds> Wait this long for the instance to stop, and for the new one to listen or log a line (default: ${DEFAULT_LIFECYCLE_TIMEOUT_SECONDS})
|
|
53
|
+
--force Stop without waiting for running attempts; the next start reattaches them
|
|
54
|
+
--check Print the running and the latest @usine/server version, and change nothing
|
|
55
|
+
-o, --output <path> Write the run evidence to this file (default: run-<encoded-runId>.json)
|
|
56
|
+
-h, --help Print this help
|
|
57
|
+
-v, --version Print the installed @usine/server version
|
|
24
58
|
|
|
25
59
|
Environment:
|
|
26
|
-
USINE_PORT Listen on this port
|
|
27
|
-
|
|
60
|
+
USINE_PORT Listen on this port if --port is not set
|
|
61
|
+
USINE_ORIGIN Also accept the UI's pages at this origin if --origin is not set
|
|
62
|
+
USINE_LOG_LEVEL Log at this level if --log-level is not set
|
|
63
|
+
USINE_ALLOW_VOLATILE_INSTANCE Set to 1 for the same effect as --allow-volatile-instance
|
|
64
|
+
|
|
65
|
+
Every command reads .env in the instance folder for the variables that the environment doesn't set.`;
|
|
28
66
|
export class CliUsageError extends Schema.TaggedError("@usine/server/CliUsageError")("CliUsageError", { message: Schema.String }) {
|
|
29
67
|
}
|
|
30
68
|
export class CliVersionError extends Schema.TaggedError("@usine/server/CliVersionError")("CliVersionError", { cause: Schema.Defect() }) {
|
|
31
69
|
}
|
|
32
|
-
|
|
70
|
+
/** Another process is listening on the HTTP port. */
|
|
71
|
+
export class PortInUseError extends Schema.TaggedError("@usine/server/PortInUseError")("PortInUseError", {
|
|
72
|
+
port: Port,
|
|
73
|
+
/** The PID of the listening process, or `None` if lsof can't find it. */
|
|
74
|
+
holder: Schema.Option(Schema.Int),
|
|
75
|
+
}) {
|
|
33
76
|
}
|
|
34
77
|
export class ServerStartError extends Schema.TaggedError("@usine/server/ServerStartError")("ServerStartError", { port: Port, cause: Schema.Defect() }) {
|
|
35
78
|
}
|
|
36
|
-
/**
|
|
79
|
+
/** The instance folder is in a directory the OS may clear, which would delete the run history. */
|
|
37
80
|
export class VolatileInstanceDirectoryError extends Schema.TaggedError("@usine/server/VolatileInstanceDirectoryError")("VolatileInstanceDirectoryError", {
|
|
38
81
|
directory: Schema.String,
|
|
39
82
|
root: Schema.String,
|
|
@@ -48,7 +91,38 @@ export class HelpCommand extends Schema.TaggedClass("@usine/server/HelpCommand")
|
|
|
48
91
|
}
|
|
49
92
|
export class VersionCommand extends Schema.TaggedClass("@usine/server/VersionCommand")("VersionCommand", {}) {
|
|
50
93
|
}
|
|
51
|
-
export class UpCommand extends Schema.TaggedClass("@usine/server/UpCommand")("UpCommand", {
|
|
94
|
+
export class UpCommand extends Schema.TaggedClass("@usine/server/UpCommand")("UpCommand", {
|
|
95
|
+
port: Port,
|
|
96
|
+
/** The origin of the UI's pages besides the loopback ones, which the operator API accepts. */
|
|
97
|
+
origin: Schema.Option(UiOrigin),
|
|
98
|
+
logLevel: UpLogLevel,
|
|
99
|
+
allowVolatileInstance: Schema.Boolean,
|
|
100
|
+
detach: Schema.Boolean,
|
|
101
|
+
}) {
|
|
102
|
+
}
|
|
103
|
+
/** Reports whether `usine up` runs in the current instance folder. */
|
|
104
|
+
export class StatusCommand extends Schema.TaggedClass("@usine/server/StatusCommand")("StatusCommand", {}) {
|
|
105
|
+
}
|
|
106
|
+
/** How long a lifecycle command waits for each stop and start, and whether it ends the drain. */
|
|
107
|
+
export class LifecycleOptions extends Schema.Class("@usine/server/LifecycleOptions")({
|
|
108
|
+
timeout: Schema.Duration,
|
|
109
|
+
/** Sends a second `SIGTERM`, which stops the instance without waiting for running Attempts. */
|
|
110
|
+
force: Schema.Boolean,
|
|
111
|
+
}) {
|
|
112
|
+
}
|
|
113
|
+
/** Stops the `usine up` of the current instance folder and waits for it to exit. */
|
|
114
|
+
export class StopCommand extends Schema.TaggedClass("@usine/server/StopCommand")("StopCommand", { options: LifecycleOptions }) {
|
|
115
|
+
}
|
|
116
|
+
/** Stops the `usine up` of the current instance folder and starts it again in the background. */
|
|
117
|
+
export class RestartCommand extends Schema.TaggedClass("@usine/server/RestartCommand")("RestartCommand", { options: LifecycleOptions }) {
|
|
118
|
+
}
|
|
119
|
+
/** Moves the instance's `@usine/server` pin to another published version and restarts it. */
|
|
120
|
+
export class UpgradeCommand extends Schema.TaggedClass("@usine/server/UpgradeCommand")("UpgradeCommand", {
|
|
121
|
+
/** A version or dist-tag; `latest` if absent. */
|
|
122
|
+
version: Schema.Option(Schema.NonEmptyString),
|
|
123
|
+
check: Schema.Boolean,
|
|
124
|
+
options: LifecycleOptions,
|
|
125
|
+
}) {
|
|
52
126
|
}
|
|
53
127
|
/** Exports one Run from the current instance into a new local JSON file. */
|
|
54
128
|
export class ExportRunCommand extends Schema.TaggedClass("@usine/server/ExportRunCommand")("ExportRunCommand", {
|
|
@@ -63,11 +137,26 @@ export const CliCommand = Schema.Union([
|
|
|
63
137
|
HelpCommand,
|
|
64
138
|
VersionCommand,
|
|
65
139
|
UpCommand,
|
|
140
|
+
StatusCommand,
|
|
141
|
+
StopCommand,
|
|
142
|
+
RestartCommand,
|
|
143
|
+
UpgradeCommand,
|
|
66
144
|
ExportRunCommand,
|
|
67
145
|
BackupCommand,
|
|
68
146
|
]);
|
|
69
147
|
const usageError = (message = CLI_USAGE) => new CliUsageError({ message });
|
|
70
148
|
const decodePort = (source, value) => Schema.decodeUnknownEffect(PortFromString)(value).pipe(Effect.mapError(() => usageError(`${source} must be a whole number between 1 and 65535.\n\n${CLI_USAGE}`)));
|
|
149
|
+
/** Returns the origin of a URL without a path, query, or fragment, else `value` itself. */
|
|
150
|
+
const originOf = (value) => {
|
|
151
|
+
if (!URL.canParse(value))
|
|
152
|
+
return value;
|
|
153
|
+
const url = new URL(value);
|
|
154
|
+
return url.href === `${url.origin}/` ? url.origin : value;
|
|
155
|
+
};
|
|
156
|
+
/** Decodes the URL of the UI's pages, such as `https://orchestrator.example.ts.net/`. */
|
|
157
|
+
const decodeUiOrigin = (source, value) => Schema.decodeUnknownEffect(UiOrigin)(originOf(value)).pipe(Effect.mapError(() => usageError(`${source} must be the http or https URL of the UI without a path, such as https://orchestrator.example.ts.net.\n\n${CLI_USAGE}`)));
|
|
158
|
+
/** Decodes a log level name, ignoring case. */
|
|
159
|
+
const decodeLogLevel = (source, value) => Schema.decodeUnknownEffect(LogLevelName)(value.toLowerCase()).pipe(Effect.map((name) => LOG_LEVEL_NAMES[name]), Effect.mapError(() => usageError(`${source} must be trace, debug, info, warn, or error.\n\n${CLI_USAGE}`)));
|
|
71
160
|
const ALLOW_VOLATILE_FLAG = "--allow-volatile-instance";
|
|
72
161
|
const exportRunCommand = (args) => {
|
|
73
162
|
const [runId, flag, output] = args;
|
|
@@ -89,7 +178,10 @@ const backupCommand = (args) => {
|
|
|
89
178
|
};
|
|
90
179
|
const upCommand = (args, environment) => Effect.gen(function* () {
|
|
91
180
|
let port = Option.none();
|
|
181
|
+
let origin = Option.none();
|
|
182
|
+
let logLevel = Option.none();
|
|
92
183
|
let allowVolatileInstance = Option.exists(environment.allowVolatileInstance, (v) => v === "1");
|
|
184
|
+
let detach = false;
|
|
93
185
|
for (let index = 0; index < args.length; index += 1) {
|
|
94
186
|
const arg = args[index];
|
|
95
187
|
if (arg === "--port" || arg === "-p") {
|
|
@@ -102,9 +194,32 @@ const upCommand = (args, environment) => Effect.gen(function* () {
|
|
|
102
194
|
else if (arg?.startsWith("--port=")) {
|
|
103
195
|
port = Option.some(arg.slice("--port=".length));
|
|
104
196
|
}
|
|
197
|
+
else if (arg === "--origin") {
|
|
198
|
+
const value = args[index + 1];
|
|
199
|
+
if (value === undefined)
|
|
200
|
+
return yield* usageError();
|
|
201
|
+
origin = Option.some(value);
|
|
202
|
+
index += 1;
|
|
203
|
+
}
|
|
204
|
+
else if (arg?.startsWith("--origin=")) {
|
|
205
|
+
origin = Option.some(arg.slice("--origin=".length));
|
|
206
|
+
}
|
|
207
|
+
else if (arg === "--log-level") {
|
|
208
|
+
const value = args[index + 1];
|
|
209
|
+
if (value === undefined)
|
|
210
|
+
return yield* usageError();
|
|
211
|
+
logLevel = Option.some(value);
|
|
212
|
+
index += 1;
|
|
213
|
+
}
|
|
214
|
+
else if (arg?.startsWith("--log-level=")) {
|
|
215
|
+
logLevel = Option.some(arg.slice("--log-level=".length));
|
|
216
|
+
}
|
|
105
217
|
else if (arg === ALLOW_VOLATILE_FLAG) {
|
|
106
218
|
allowVolatileInstance = true;
|
|
107
219
|
}
|
|
220
|
+
else if (arg === "--detach") {
|
|
221
|
+
detach = true;
|
|
222
|
+
}
|
|
108
223
|
else {
|
|
109
224
|
return yield* usageError();
|
|
110
225
|
}
|
|
@@ -116,28 +231,123 @@ const upCommand = (args, environment) => Effect.gen(function* () {
|
|
|
116
231
|
}),
|
|
117
232
|
onSome: (value) => decodePort("--port", value),
|
|
118
233
|
});
|
|
119
|
-
|
|
234
|
+
const resolvedOrigin = yield* Option.match(origin, {
|
|
235
|
+
onNone: () => Option.match(environment.origin, {
|
|
236
|
+
onNone: () => Effect.succeedNone,
|
|
237
|
+
onSome: (value) => Effect.asSome(decodeUiOrigin("USINE_ORIGIN", value)),
|
|
238
|
+
}),
|
|
239
|
+
onSome: (value) => Effect.asSome(decodeUiOrigin("--origin", value)),
|
|
240
|
+
});
|
|
241
|
+
const resolvedLogLevel = yield* Option.match(logLevel, {
|
|
242
|
+
onNone: () => Option.match(environment.logLevel, {
|
|
243
|
+
onNone: () => Effect.succeed(DEFAULT_LOG_LEVEL),
|
|
244
|
+
onSome: (value) => decodeLogLevel("USINE_LOG_LEVEL", value),
|
|
245
|
+
}),
|
|
246
|
+
onSome: (value) => decodeLogLevel("--log-level", value),
|
|
247
|
+
});
|
|
248
|
+
return new UpCommand({
|
|
249
|
+
port: resolvedPort,
|
|
250
|
+
origin: resolvedOrigin,
|
|
251
|
+
logLevel: resolvedLogLevel,
|
|
252
|
+
allowVolatileInstance,
|
|
253
|
+
detach,
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
/** Returns the settings of a `usine up` without flags: those of the environment, or the defaults. */
|
|
257
|
+
export const environmentUp = (environment) => upCommand([], environment);
|
|
258
|
+
const SecondsFromString = Schema.NumberFromString.pipe(Schema.decodeTo(Schema.Int.check(Schema.isGreaterThan(0))));
|
|
259
|
+
/** Parses `--timeout`, `--force`, and, if `allowCheck`, `--check`, and collects the operands. */
|
|
260
|
+
const lifecycleArguments = (args, allowCheck) => Effect.gen(function* () {
|
|
261
|
+
let timeout = Option.none();
|
|
262
|
+
let force = false;
|
|
263
|
+
let check = false;
|
|
264
|
+
const operands = [];
|
|
265
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
266
|
+
const arg = args[index] ?? "";
|
|
267
|
+
if (arg === "--timeout") {
|
|
268
|
+
const value = args[index + 1];
|
|
269
|
+
if (value === undefined)
|
|
270
|
+
return yield* usageError();
|
|
271
|
+
timeout = Option.some(value);
|
|
272
|
+
index += 1;
|
|
273
|
+
}
|
|
274
|
+
else if (arg.startsWith("--timeout=")) {
|
|
275
|
+
timeout = Option.some(arg.slice("--timeout=".length));
|
|
276
|
+
}
|
|
277
|
+
else if (arg === "--force") {
|
|
278
|
+
force = true;
|
|
279
|
+
}
|
|
280
|
+
else if (arg === "--check" && allowCheck) {
|
|
281
|
+
check = true;
|
|
282
|
+
}
|
|
283
|
+
else if (arg !== "" && !arg.startsWith("-")) {
|
|
284
|
+
operands.push(arg);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
return yield* usageError();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const seconds = yield* Option.match(timeout, {
|
|
291
|
+
onNone: () => Effect.succeed(DEFAULT_LIFECYCLE_TIMEOUT_SECONDS),
|
|
292
|
+
onSome: (value) => Schema.decodeUnknownEffect(SecondsFromString)(value).pipe(Effect.mapError(() => usageError(`--timeout must be a whole number of seconds above 0.\n\n${CLI_USAGE}`))),
|
|
293
|
+
});
|
|
294
|
+
return {
|
|
295
|
+
options: new LifecycleOptions({ timeout: Duration.seconds(seconds), force }),
|
|
296
|
+
check,
|
|
297
|
+
operands,
|
|
298
|
+
};
|
|
120
299
|
});
|
|
300
|
+
const stopOrRestartCommand = (command, args) => Effect.flatMap(lifecycleArguments(args, false), ({ options, operands }) => {
|
|
301
|
+
if (operands.length > 0)
|
|
302
|
+
return Effect.fail(usageError());
|
|
303
|
+
return Effect.succeed(command === "stop" ? new StopCommand({ options }) : new RestartCommand({ options }));
|
|
304
|
+
});
|
|
305
|
+
const upgradeCommand = (args) => Effect.flatMap(lifecycleArguments(args, true), ({ options, check, operands }) => {
|
|
306
|
+
const [version, ...rest] = operands;
|
|
307
|
+
if (rest.length > 0)
|
|
308
|
+
return Effect.fail(usageError());
|
|
309
|
+
return Effect.succeed(new UpgradeCommand({ version: Option.fromUndefinedOr(version), check, options }));
|
|
310
|
+
});
|
|
311
|
+
const SUBCOMMANDS = new Set([
|
|
312
|
+
"up",
|
|
313
|
+
"status",
|
|
314
|
+
"stop",
|
|
315
|
+
"restart",
|
|
316
|
+
"upgrade",
|
|
317
|
+
"backup",
|
|
318
|
+
"export-run",
|
|
319
|
+
]);
|
|
121
320
|
/** Parses process arguments and the environment into one validated CLI command. */
|
|
122
321
|
export const parseCli = Effect.fn("Cli.parse")((args, environment) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
(args[1] === "--help" || args[1] === "-h"))) {
|
|
322
|
+
const [command = "", ...rest] = args;
|
|
323
|
+
if ((args.length === 1 && (command === "--help" || command === "-h")) ||
|
|
324
|
+
(args.length === 2 && SUBCOMMANDS.has(command) && (rest[0] === "--help" || rest[0] === "-h"))) {
|
|
127
325
|
return Effect.succeed(new HelpCommand());
|
|
128
326
|
}
|
|
129
|
-
if (args.length === 1 && (
|
|
327
|
+
if (args.length === 1 && (command === "--version" || command === "-v")) {
|
|
130
328
|
return Effect.succeed(new VersionCommand());
|
|
131
329
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
330
|
+
switch (command) {
|
|
331
|
+
case "backup":
|
|
332
|
+
return backupCommand(rest);
|
|
333
|
+
case "export-run":
|
|
334
|
+
return exportRunCommand(rest);
|
|
335
|
+
case "up":
|
|
336
|
+
return upCommand(rest, environment);
|
|
337
|
+
case "status":
|
|
338
|
+
return rest.length === 0 ? Effect.succeed(new StatusCommand()) : Effect.fail(usageError());
|
|
339
|
+
case "stop":
|
|
340
|
+
case "restart":
|
|
341
|
+
return stopOrRestartCommand(command, rest);
|
|
342
|
+
case "upgrade":
|
|
343
|
+
return upgradeCommand(rest);
|
|
344
|
+
default:
|
|
345
|
+
return Effect.fail(usageError());
|
|
346
|
+
}
|
|
139
347
|
});
|
|
140
|
-
/**
|
|
348
|
+
/**
|
|
349
|
+
* Returns the directories the OS may clear: `os.tmpdir()`, `$TMPDIR`, and common temp locations.
|
|
350
|
+
*/
|
|
141
351
|
export const volatileRoots = (environmentTmpdir) => [
|
|
142
352
|
...new Set([
|
|
143
353
|
tmpdir(),
|
|
@@ -150,13 +360,12 @@ export const volatileRoots = (environmentTmpdir) => [
|
|
|
150
360
|
.filter((root) => root.length > 0)
|
|
151
361
|
.map((root) => resolve(root));
|
|
152
362
|
const isUnder = (directory, root) => directory === root || directory.startsWith(root.endsWith(sep) ? root : `${root}${sep}`);
|
|
153
|
-
/** Returns the volatile root
|
|
363
|
+
/** Returns the volatile root that contains `directory`, if any, without resolving symlinks. */
|
|
154
364
|
export const volatileRoot = (directory, roots) => {
|
|
155
365
|
const resolved = resolve(directory);
|
|
156
366
|
return Option.fromNullishOr(roots.find((root) => isUnder(resolved, root)));
|
|
157
367
|
};
|
|
158
368
|
const PackageMetadataFromJson = Schema.fromJsonString(Schema.Struct({ version: Schema.NonEmptyString }));
|
|
159
|
-
/** Reads the version of this installed server from its package.json. */
|
|
160
369
|
export const packageVersion = Effect.fn("Cli.packageVersion")(function* () {
|
|
161
370
|
const fileSystem = yield* FileSystem.FileSystem;
|
|
162
371
|
const packagePath = fileURLToPath(new URL("../package.json", import.meta.url));
|
|
@@ -167,10 +376,50 @@ export const packageVersion = Effect.fn("Cli.packageVersion")(function* () {
|
|
|
167
376
|
return metadata.version;
|
|
168
377
|
});
|
|
169
378
|
const AddressInUse = Schema.Struct({ code: Schema.Literal("EADDRINUSE") });
|
|
170
|
-
/**
|
|
379
|
+
/** Returns `PortInUseError` for `EADDRINUSE`, otherwise `ServerStartError`. */
|
|
171
380
|
export const serverStartError = (port, error) => Schema.is(AddressInUse)(error.cause)
|
|
172
|
-
? new PortInUseError({ port })
|
|
381
|
+
? new PortInUseError({ port, holder: Option.none() })
|
|
173
382
|
: new ServerStartError({ port, cause: error.cause });
|
|
383
|
+
const ProcessIdFromString = Schema.NumberFromString.pipe(Schema.decodeTo(Schema.Int));
|
|
384
|
+
/**
|
|
385
|
+
* Returns the PID listening on `port` from lsof, or `None` if lsof is missing or can't see the
|
|
386
|
+
* process.
|
|
387
|
+
*/
|
|
388
|
+
const portHolder = Effect.fn("Cli.portHolder")(function* (port) {
|
|
389
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
390
|
+
const lines = yield* spawner
|
|
391
|
+
.lines(ChildProcess.make("lsof", ["-nP", `-iTCP:${port}`, "-sTCP:LISTEN", "-t"], {
|
|
392
|
+
stdin: "ignore",
|
|
393
|
+
stderr: "ignore",
|
|
394
|
+
}))
|
|
395
|
+
.pipe(Effect.timeout(PORT_HOLDER_TIMEOUT), Effect.tapError((cause) => Effect.logDebug("Could not look up the process listening on the port", { port, cause })), Effect.orElseSucceed(() => []));
|
|
396
|
+
return Arr.findFirst(lines, (line) => Schema.decodeUnknownOption(ProcessIdFromString)(line.trim()));
|
|
397
|
+
});
|
|
398
|
+
/** Fails with `PortInUseError`, with the listening PID if found. */
|
|
399
|
+
export const portInUse = Effect.fn("Cli.portInUse")(function* (port) {
|
|
400
|
+
const holder = yield* portHolder(port);
|
|
401
|
+
yield* Effect.logWarning("Another process listens on the HTTP port", {
|
|
402
|
+
port,
|
|
403
|
+
holder: Option.getOrUndefined(holder),
|
|
404
|
+
});
|
|
405
|
+
return yield* new PortInUseError({ port, holder });
|
|
406
|
+
});
|
|
407
|
+
const portTaken = (port) => Effect.callback((resume) => {
|
|
408
|
+
const server = createServer();
|
|
409
|
+
server.once("error", (cause) => resume(Schema.is(AddressInUse)(cause)
|
|
410
|
+
? Effect.succeed(true)
|
|
411
|
+
: Effect.fail(new ServerStartError({ port, cause }))));
|
|
412
|
+
server.listen({ host: SERVER_HOST, port }, () => server.close(() => resume(Effect.succeed(false))));
|
|
413
|
+
return Effect.sync(() => server.close());
|
|
414
|
+
});
|
|
415
|
+
/**
|
|
416
|
+
* Fails with `PortInUseError` if another process is listening on `port`. Call it before `usine up`
|
|
417
|
+
* builds its runtime.
|
|
418
|
+
*/
|
|
419
|
+
export const refuseTakenPort = Effect.fn("Cli.refuseTakenPort")(function* (port) {
|
|
420
|
+
if (yield* portTaken(port))
|
|
421
|
+
return yield* portInUse(port);
|
|
422
|
+
});
|
|
174
423
|
const browserCommand = (url) => {
|
|
175
424
|
if (process.platform === "darwin")
|
|
176
425
|
return { command: "open", args: [url] };
|
|
@@ -179,7 +428,7 @@ const browserCommand = (url) => {
|
|
|
179
428
|
}
|
|
180
429
|
return { command: "xdg-open", args: [url] };
|
|
181
430
|
};
|
|
182
|
-
/** Opens the setup page in a browser
|
|
431
|
+
/** Opens the setup page in a browser. Call it only after the HTTP server has bound. */
|
|
183
432
|
export const openBrowser = Effect.fn("Cli.openBrowser")(function* (url, timeout = BROWSER_OPEN_TIMEOUT) {
|
|
184
433
|
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
185
434
|
const { command, args } = browserCommand(url);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Duration, Effect, Schema } from "effect";
|
|
2
|
+
import { ChildProcessSpawner } from "effect/process";
|
|
3
|
+
declare const CommandError_base: Schema.Class<CommandError, Schema.TaggedStruct<"CommandError", {
|
|
4
|
+
readonly command: Schema.String;
|
|
5
|
+
readonly reason: Schema.String;
|
|
6
|
+
}>, import("effect/Cause").YieldableError>;
|
|
7
|
+
/** A command couldn't run, timed out, or exited non-zero. */
|
|
8
|
+
export declare class CommandError extends CommandError_base {
|
|
9
|
+
}
|
|
10
|
+
/** Runs a command in `cwd` and returns its output. Fails if it exits non-zero or times out. */
|
|
11
|
+
export declare const runCommand: (command: string, args: readonly string[], cwd: string, timeout: Duration.Input) => Effect.Effect<{
|
|
12
|
+
exitCode: number;
|
|
13
|
+
stdout: string;
|
|
14
|
+
stderr: string;
|
|
15
|
+
}, CommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
16
|
+
/**
|
|
17
|
+
* Runs a command in `cwd` with the terminal as its standard output and error, so that the operator
|
|
18
|
+
* sees its progress. Fails if it exits non-zero.
|
|
19
|
+
*/
|
|
20
|
+
export declare const runInTerminal: (command: string, args: readonly string[], cwd: string) => Effect.Effect<undefined, CommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAS,MAAM,EAAU,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAgB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;;;;;AASnE,6DAA6D;AAC7D,qBAAa,YAAa,SAAQ,iBAGjC;CAAG;AAMJ,+FAA+F;AAC/F,eAAO,MAAM,UAAU;;;;yDAsCrB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,4IAwBxB,CAAC"}
|
package/dist/command.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Duration, Effect, Fiber, Schema, Stream } from "effect";
|
|
2
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
3
|
+
/** A command couldn't run, timed out, or exited non-zero. */
|
|
4
|
+
export class CommandError extends Schema.TaggedError("@usine/server/CommandError")("CommandError", { command: Schema.String, reason: Schema.String }) {
|
|
5
|
+
}
|
|
6
|
+
const commandLine = (command, args) => [command, ...args].join(" ");
|
|
7
|
+
const firstLine = (text) => text.trim().split("\n")[0] ?? "";
|
|
8
|
+
/** Runs a command in `cwd` and returns its output. Fails if it exits non-zero or times out. */
|
|
9
|
+
export const runCommand = Effect.fn("Cli.runCommand")(function* (command, args, cwd, timeout) {
|
|
10
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
11
|
+
const line = commandLine(command, args);
|
|
12
|
+
yield* Effect.annotateCurrentSpan({ command: line, cwd });
|
|
13
|
+
const result = yield* Effect.scoped(Effect.gen(function* () {
|
|
14
|
+
const handle = yield* spawner.spawn(ChildProcess.make(command, args, { cwd, stdin: "ignore" }));
|
|
15
|
+
const stdout = yield* handle.stdout.pipe(Stream.decodeText(), Stream.mkString, Effect.forkChild);
|
|
16
|
+
const stderr = yield* handle.stderr.pipe(Stream.decodeText(), Stream.mkString, Effect.forkChild);
|
|
17
|
+
const exitCode = Number(yield* handle.exitCode);
|
|
18
|
+
const [out, err] = yield* Effect.all([Fiber.join(stdout), Fiber.join(stderr)]);
|
|
19
|
+
return { exitCode, stdout: out, stderr: err };
|
|
20
|
+
})).pipe(Effect.timeout(timeout), Effect.mapError((cause) => new CommandError({ command: line, reason: cause.message })));
|
|
21
|
+
if (result.exitCode !== 0) {
|
|
22
|
+
const reason = `exited with status ${result.exitCode}: ${firstLine(result.stderr) || firstLine(result.stdout)}`;
|
|
23
|
+
yield* Effect.logWarning("A command exited non-zero", { command: line, reason });
|
|
24
|
+
return yield* new CommandError({ command: line, reason });
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Runs a command in `cwd` with the terminal as its standard output and error, so that the operator
|
|
30
|
+
* sees its progress. Fails if it exits non-zero.
|
|
31
|
+
*/
|
|
32
|
+
export const runInTerminal = Effect.fn("Cli.runInTerminal")(function* (command, args, cwd) {
|
|
33
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
34
|
+
const line = commandLine(command, args);
|
|
35
|
+
yield* Effect.annotateCurrentSpan({ command: line, cwd });
|
|
36
|
+
const exitCode = yield* spawner
|
|
37
|
+
.exitCode(ChildProcess.make(command, args, {
|
|
38
|
+
cwd,
|
|
39
|
+
stdin: "ignore",
|
|
40
|
+
stdout: "inherit",
|
|
41
|
+
stderr: "inherit",
|
|
42
|
+
}))
|
|
43
|
+
.pipe(Effect.mapError((cause) => new CommandError({ command: line, reason: cause.message })));
|
|
44
|
+
if (Number(exitCode) !== 0) {
|
|
45
|
+
return yield* new CommandError({
|
|
46
|
+
command: line,
|
|
47
|
+
reason: `exited with status ${Number(exitCode)}`,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|