@flowscripter/dynamic-cli-framework 2.1.0 → 2.3.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/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/src/cli/BaseCLI.d.ts +3 -0
- package/dist/src/cli/BaseCLI.d.ts.map +1 -1
- package/dist/src/cli/BaseCLI.js +14 -0
- package/dist/src/cli/BaseCLIFeatureOptions.d.ts +4 -0
- package/dist/src/cli/BaseCLIFeatureOptions.d.ts.map +1 -1
- package/dist/src/command/VersionCommand.d.ts.map +1 -1
- package/dist/src/command/VersionCommand.js +10 -1
- package/dist/src/service/banner/BannerServiceProvider.d.ts.map +1 -1
- package/dist/src/service/banner/BannerServiceProvider.js +8 -0
- package/dist/src/service/plugin/DefaultPluginService.d.ts +1 -1
- package/dist/src/service/plugin/DefaultPluginService.d.ts.map +1 -1
- package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +3 -2
- package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -1
- package/dist/src/service/plugin/DefaultPluginServiceProvider.js +22 -2
- package/dist/src/service/plugin/SpawnInterfaceAdapter.d.ts +19 -0
- package/dist/src/service/plugin/SpawnInterfaceAdapter.d.ts.map +1 -0
- package/dist/src/service/plugin/SpawnInterfaceAdapter.js +40 -0
- package/dist/src/service/spawn/DefaultSpawnService.d.ts +7 -0
- package/dist/src/service/spawn/DefaultSpawnService.d.ts.map +1 -0
- package/dist/src/service/spawn/DefaultSpawnService.js +95 -0
- package/dist/src/service/spawn/SpawnServiceProvider.d.ts +12 -0
- package/dist/src/service/spawn/SpawnServiceProvider.d.ts.map +1 -0
- package/dist/src/service/spawn/SpawnServiceProvider.js +24 -0
- package/dist/src/service/upgrade/DefaultUpgradeService.d.ts +14 -0
- package/dist/src/service/upgrade/DefaultUpgradeService.d.ts.map +1 -0
- package/dist/src/service/upgrade/DefaultUpgradeService.js +312 -0
- package/dist/src/service/upgrade/UpgradeLocationsConfig.d.ts +51 -0
- package/dist/src/service/upgrade/UpgradeLocationsConfig.d.ts.map +1 -0
- package/dist/src/service/upgrade/UpgradeLocationsConfig.js +0 -0
- package/dist/src/service/upgrade/UpgradeServiceProvider.d.ts +13 -0
- package/dist/src/service/upgrade/UpgradeServiceProvider.d.ts.map +1 -0
- package/dist/src/service/upgrade/UpgradeServiceProvider.js +120 -0
- package/dist/src/service/upgrade/command/UpgradeSubCommand.d.ts +16 -0
- package/dist/src/service/upgrade/command/UpgradeSubCommand.d.ts.map +1 -0
- package/dist/src/service/upgrade/command/UpgradeSubCommand.js +50 -0
- package/index.ts +10 -1
- package/package.json +5 -3
- package/src/cli/BaseCLI.ts +16 -0
- package/src/cli/BaseCLIFeatureOptions.ts +5 -0
- package/src/command/VersionCommand.ts +13 -1
- package/src/service/banner/BannerServiceProvider.ts +13 -0
- package/src/service/plugin/DefaultPluginService.ts +1 -1
- package/src/service/plugin/DefaultPluginServiceProvider.ts +39 -3
- package/src/service/plugin/SpawnInterfaceAdapter.ts +62 -0
- package/src/service/spawn/DefaultSpawnService.ts +120 -0
- package/src/service/spawn/SpawnServiceProvider.ts +32 -0
- package/src/service/upgrade/DefaultUpgradeService.ts +379 -0
- package/src/service/upgrade/UpgradeLocationsConfig.ts +53 -0
- package/src/service/upgrade/UpgradeServiceProvider.ts +150 -0
- package/src/service/upgrade/command/UpgradeSubCommand.ts +85 -0
package/dist/index.d.ts
CHANGED
|
@@ -43,6 +43,10 @@ export { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
|
43
43
|
export type { ShutdownService } from "@flowscripter/dynamic-cli-framework-api";
|
|
44
44
|
export { default as DefaultShutdownService } from "./src/service/shutdown/DefaultShutdownService.ts";
|
|
45
45
|
export { default as ShutdownServiceProvider } from "./src/service/shutdown/ShutdownServiceProvider.ts";
|
|
46
|
+
export { SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
47
|
+
export type { SpawnOptions, SpawnResult, SpawnService, } from "@flowscripter/dynamic-cli-framework-api";
|
|
48
|
+
export { default as DefaultSpawnService } from "./src/service/spawn/DefaultSpawnService.ts";
|
|
49
|
+
export { default as SpawnServiceProvider } from "./src/service/spawn/SpawnServiceProvider.ts";
|
|
46
50
|
export { SYNTAX_HIGHLIGHTER_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
47
51
|
export type { SyntaxHighlighterService } from "@flowscripter/dynamic-cli-framework-api";
|
|
48
52
|
export type { ColorScheme } from "@flowscripter/dynamic-cli-framework-api";
|
|
@@ -112,5 +116,5 @@ export type { default as Styler } from "./src/terminal/Styler.ts";
|
|
|
112
116
|
export type { default as KeyReader, KeyEvent } from "./src/terminal/KeyReader.ts";
|
|
113
117
|
export { SpecialKey } from "./src/terminal/KeyReader.ts";
|
|
114
118
|
export { default as TtyKeyReader } from "./src/terminal/TtyKeyReader.ts";
|
|
115
|
-
export { launchMultiCommandCLI, launchSingleCommandCLI,
|
|
119
|
+
export { launchDynamicPluginMultiCommandCLI, launchMultiCommandCLI, launchSingleCommandCLI, } from "./src/launcher.ts";
|
|
116
120
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,9 @@ export { default as PrinterServiceProvider } from "./src/service/printer/Printer
|
|
|
20
20
|
export { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
21
21
|
export { default as DefaultShutdownService } from "./src/service/shutdown/DefaultShutdownService.js";
|
|
22
22
|
export { default as ShutdownServiceProvider } from "./src/service/shutdown/ShutdownServiceProvider.js";
|
|
23
|
+
export { SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
24
|
+
export { default as DefaultSpawnService } from "./src/service/spawn/DefaultSpawnService.js";
|
|
25
|
+
export { default as SpawnServiceProvider } from "./src/service/spawn/SpawnServiceProvider.js";
|
|
23
26
|
export { SYNTAX_HIGHLIGHTER_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
24
27
|
export { default as DefaultSyntaxHighlighterService } from "./src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.js";
|
|
25
28
|
export { default as SyntaxHighlighterServiceProvider } from "./src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.js";
|
|
@@ -68,4 +71,4 @@ export { default as DynamicPluginRuntimeCLI } from "./src/cli/DynamicPluginRunti
|
|
|
68
71
|
export { SpecialKey } from "./src/terminal/KeyReader.js";
|
|
69
72
|
export { default as TtyKeyReader } from "./src/terminal/TtyKeyReader.js";
|
|
70
73
|
// Convenience functions
|
|
71
|
-
export { launchMultiCommandCLI, launchSingleCommandCLI,
|
|
74
|
+
export { launchDynamicPluginMultiCommandCLI, launchMultiCommandCLI, launchSingleCommandCLI, } from "./src/launcher.js";
|
|
@@ -24,6 +24,9 @@ import type BaseCLIFeatureOptions from "./BaseCLIFeatureOptions.ts";
|
|
|
24
24
|
* Optionally enabled via {@link BaseCLIFeatureOptions}:
|
|
25
25
|
*
|
|
26
26
|
* * {@link ImagePrinterServiceProvider}
|
|
27
|
+
* * {@link SpawnServiceProvider}
|
|
28
|
+
* * {@link CompletionServiceProvider}
|
|
29
|
+
* * {@link UpgradeServiceProvider}
|
|
27
30
|
*
|
|
28
31
|
* `keyReader` is optional. If omitted, or if the stderr {@link Terminal} is not a TTY, prompting is
|
|
29
32
|
* unavailable: {@link PrompterServiceProvider} (and {@link ArgumentPrompterServiceProvider}, if
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;gBAavC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,cAAc,EACpC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,QAAQ,EACxB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,qBAAqB;IA8DjC;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAI1D;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAU5B,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CA2L3D"}
|
package/dist/src/cli/BaseCLI.js
CHANGED
|
@@ -25,6 +25,8 @@ import ArgumentPrompterServiceProvider from "../service/argumentPrompter/Argumen
|
|
|
25
25
|
import DefaultCompletionService from "../service/completion/DefaultCompletionService.js";
|
|
26
26
|
import CompletionServiceProvider from "../service/completion/CompletionServiceProvider.js";
|
|
27
27
|
import ImagePrinterServiceProvider from "../service/imagePrinter/ImagePrinterServiceProvider.js";
|
|
28
|
+
import SpawnServiceProvider from "../service/spawn/SpawnServiceProvider.js";
|
|
29
|
+
import UpgradeServiceProvider from "../service/upgrade/UpgradeServiceProvider.js";
|
|
28
30
|
const logger = getLogger("BaseCLI");
|
|
29
31
|
/**
|
|
30
32
|
* Base implementation of a {@link CLI}.
|
|
@@ -42,6 +44,9 @@ const logger = getLogger("BaseCLI");
|
|
|
42
44
|
* Optionally enabled via {@link BaseCLIFeatureOptions}:
|
|
43
45
|
*
|
|
44
46
|
* * {@link ImagePrinterServiceProvider}
|
|
47
|
+
* * {@link SpawnServiceProvider}
|
|
48
|
+
* * {@link CompletionServiceProvider}
|
|
49
|
+
* * {@link UpgradeServiceProvider}
|
|
45
50
|
*
|
|
46
51
|
* `keyReader` is optional. If omitted, or if the stderr {@link Terminal} is not a TTY, prompting is
|
|
47
52
|
* unavailable: {@link PrompterServiceProvider} (and {@link ArgumentPrompterServiceProvider}, if
|
|
@@ -89,6 +94,9 @@ export default class BaseCLI {
|
|
|
89
94
|
argumentPrompterServiceEnabled: false,
|
|
90
95
|
completionServiceEnabled: false,
|
|
91
96
|
imagePrinterServiceEnabled: false,
|
|
97
|
+
spawnServiceEnabled: false,
|
|
98
|
+
upgradeServiceEnabled: false,
|
|
99
|
+
upgradeLocationsConfig: { supportedPlatforms: [] },
|
|
92
100
|
validateAllCommands: false,
|
|
93
101
|
promptingEnabled: true,
|
|
94
102
|
...options,
|
|
@@ -181,10 +189,16 @@ export default class BaseCLI {
|
|
|
181
189
|
logger.debug("Skipping ImagePrinterServiceProvider: imagePrinterServiceEnabled is true but stdout is not a TTY");
|
|
182
190
|
}
|
|
183
191
|
}
|
|
192
|
+
if (this.#options.spawnServiceEnabled) {
|
|
193
|
+
this.addServiceProvider(new SpawnServiceProvider(58));
|
|
194
|
+
}
|
|
184
195
|
if (this.#options.completionServiceEnabled) {
|
|
185
196
|
const completionService = new DefaultCompletionService();
|
|
186
197
|
this.addServiceProvider(new CompletionServiceProvider(5, completionService, this.#commandRegistry));
|
|
187
198
|
}
|
|
199
|
+
if (this.#options.upgradeServiceEnabled) {
|
|
200
|
+
this.addServiceProvider(new UpgradeServiceProvider(6, this.#options.upgradeLocationsConfig));
|
|
201
|
+
}
|
|
188
202
|
const configurationServiceProvider = new ConfigurationServiceProvider(90, this.#options.envVarsSupportEnabled, this.#options.configFileSupportEnabled, this.#options.keyValueServiceEnabled, this.#options.secretServiceEnabled);
|
|
189
203
|
this.addServiceProvider(configurationServiceProvider);
|
|
190
204
|
for (const serviceProvider of this.#serviceProviderRegistry.getServiceProviders()) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { UpgradeLocationsConfig } from "../service/upgrade/UpgradeLocationsConfig.ts";
|
|
1
2
|
export default interface BaseCLIFeatureOptions {
|
|
2
3
|
readonly configFileSupportEnabled?: boolean;
|
|
3
4
|
readonly envVarsSupportEnabled?: boolean;
|
|
@@ -6,6 +7,9 @@ export default interface BaseCLIFeatureOptions {
|
|
|
6
7
|
readonly argumentPrompterServiceEnabled?: boolean;
|
|
7
8
|
readonly completionServiceEnabled?: boolean;
|
|
8
9
|
readonly imagePrinterServiceEnabled?: boolean;
|
|
10
|
+
readonly spawnServiceEnabled?: boolean;
|
|
11
|
+
readonly upgradeServiceEnabled?: boolean;
|
|
12
|
+
readonly upgradeLocationsConfig?: UpgradeLocationsConfig;
|
|
9
13
|
readonly validateAllCommands?: boolean;
|
|
10
14
|
readonly promptingEnabled?: boolean;
|
|
11
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCLIFeatureOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLIFeatureOptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"BaseCLIFeatureOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLIFeatureOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAE3F,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionCommand.d.ts","sourceRoot":"","sources":["../../../src/command/VersionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"VersionCommand.d.ts","sourceRoot":"","sources":["../../../src/command/VersionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAM7E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,aAAa;IAC1D,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,8BAA8B;IAClD,QAAQ,CAAC,UAAU,OAAO;IAEb,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CActD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PRINTER_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
import { UPGRADE_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
3
|
/**
|
|
3
4
|
* Implementation of a {@link GlobalCommand} which outputs the version of the CLI.
|
|
4
5
|
*/
|
|
@@ -8,6 +9,14 @@ export default class VersionCommand {
|
|
|
8
9
|
shortAlias = "v";
|
|
9
10
|
async execute(context) {
|
|
10
11
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
11
|
-
|
|
12
|
+
let line = context.cliConfig.version;
|
|
13
|
+
if (context.doesServiceExist(UPGRADE_SERVICE_ID)) {
|
|
14
|
+
const upgradeService = context.getServiceById(UPGRADE_SERVICE_ID);
|
|
15
|
+
const result = await upgradeService.checkForUpgrade().catch(() => undefined);
|
|
16
|
+
if (result?.updateAvailable) {
|
|
17
|
+
line += ` (${result.latestVersion} available, run '${context.cliConfig.name} upgrade')`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
await printerService.print(`${line}\n`);
|
|
12
21
|
}
|
|
13
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/banner/BannerServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI5F,OAAO,KAAK,4BAA4B,MAAM,kDAAkD,CAAC;AAGjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"BannerServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/banner/BannerServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI5F,OAAO,KAAK,4BAA4B,MAAM,kDAAkD,CAAC;AAGjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,eAAO,MAAM,iBAAiB,uDAAuD,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,eAAe;;IAoBjE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAnB3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAqB;IAC/C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAGjC;;OAEG;IACH,WAAW,UAAQ;IAEnB;;;;;;OAMG;gBAED,eAAe,EAAE,MAAM,EACvB,4BAA4B,CAAC,EAAE,4BAA4B,EAC1C,QAAQ,GAAE,MAAmB;IAMzC,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAM5D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA2CnD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import NoBannerCommand from "./command/NoBannerCommand.js";
|
|
2
2
|
import { PRINTER_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
3
|
import { ASCII_BANNER_GENERATOR_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
4
|
+
import { UPGRADE_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
4
5
|
export const BANNER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/banner-service";
|
|
5
6
|
/**
|
|
6
7
|
* Provides ascii banner functionality.
|
|
@@ -49,6 +50,13 @@ export default class BannerServiceProvider {
|
|
|
49
50
|
if (cliConfig.version.length > 0) {
|
|
50
51
|
await printerService.info(` ${printerService.secondary("version: " + cliConfig.version)}\n`);
|
|
51
52
|
}
|
|
53
|
+
if (context.doesServiceExist(UPGRADE_SERVICE_ID)) {
|
|
54
|
+
const upgradeService = context.getServiceById(UPGRADE_SERVICE_ID);
|
|
55
|
+
const result = await upgradeService.checkForUpgrade().catch(() => undefined);
|
|
56
|
+
if (result?.updateAvailable) {
|
|
57
|
+
await printerService.info(` ${printerService.secondary(`(${result.latestVersion} available, run '${cliConfig.name} upgrade')`)}\n`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
52
60
|
if (this.#configurationServiceProvider) {
|
|
53
61
|
const configLocation = this.#configurationServiceProvider.configLocation;
|
|
54
62
|
if (configLocation && configLocation.length > 0) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PluginService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
-
import type { MarketplacePluginManager,
|
|
2
|
+
import type { MarketplacePluginManager, SearchQuery, VersionedPluginDescriptor } from "@flowscripter/dynamic-plugin-framework";
|
|
3
3
|
export default class DefaultPluginService implements PluginService {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(pluginManager: MarketplacePluginManager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPluginService.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EACV,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"DefaultPluginService.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACX,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,aAAa;;gBAGpD,aAAa,EAAE,wBAAwB;IAInD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAIlF,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAInE,eAAe,IAAI,aAAa,CAAC;QAC/B,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAChD,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CAGH"}
|
|
@@ -2,12 +2,13 @@ import type { ServiceInfo, ServiceProvider } from "@flowscripter/dynamic-cli-fra
|
|
|
2
2
|
import type { Context } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
3
|
import type { CLIConfig } from "@flowscripter/dynamic-cli-framework-api";
|
|
4
4
|
import type { MarketplacePluginManager } from "@flowscripter/dynamic-plugin-framework";
|
|
5
|
+
import { type SpawnInterfaceAdapterOptions } from "./SpawnInterfaceAdapter.ts";
|
|
5
6
|
export default class DefaultPluginServiceProvider implements ServiceProvider {
|
|
6
7
|
#private;
|
|
7
8
|
readonly serviceId = "PLUGIN_SERVICE";
|
|
8
9
|
readonly servicePriority: number;
|
|
9
|
-
constructor(pluginManager: MarketplacePluginManager, servicePriority?: number);
|
|
10
|
+
constructor(pluginManager: MarketplacePluginManager, servicePriority?: number, spawnInterfaceAdapterOptions?: SpawnInterfaceAdapterOptions);
|
|
10
11
|
getServiceInfo(_cliConfig: CLIConfig): Promise<ServiceInfo>;
|
|
11
|
-
initService(
|
|
12
|
+
initService(context: Context): Promise<void>;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=DefaultPluginServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultPluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,wCAAwC,CAAC;AAIhD,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AAKpC,MAAM,CAAC,OAAO,OAAO,4BAA6B,YAAW,eAAe;;IAC1E,QAAQ,CAAC,SAAS,oBAAqB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAM/B,aAAa,EAAE,wBAAwB,EACvC,eAAe,SAAK,EACpB,4BAA4B,GAAE,4BAAiC;IAO3D,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQjE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB7C"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
import { PRINTER_SERVICE_ID, SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
1
2
|
import { PLUGIN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
3
|
import DefaultPluginService from "./DefaultPluginService.js";
|
|
3
4
|
import { PluginGroupCommand } from "./command/PluginGroupCommand.js";
|
|
5
|
+
import SpawnInterfaceAdapter, {} from "./SpawnInterfaceAdapter.js";
|
|
6
|
+
import getLogger from "../../util/logger.js";
|
|
7
|
+
const logger = getLogger("DefaultPluginServiceProvider");
|
|
4
8
|
export default class DefaultPluginServiceProvider {
|
|
5
9
|
serviceId = PLUGIN_SERVICE_ID;
|
|
6
10
|
servicePriority;
|
|
7
11
|
#pluginManager;
|
|
12
|
+
#spawnInterfaceAdapterOptions;
|
|
8
13
|
#pluginService;
|
|
9
|
-
constructor(pluginManager, servicePriority = 50) {
|
|
14
|
+
constructor(pluginManager, servicePriority = 50, spawnInterfaceAdapterOptions = {}) {
|
|
10
15
|
this.#pluginManager = pluginManager;
|
|
11
16
|
this.servicePriority = servicePriority;
|
|
17
|
+
this.#spawnInterfaceAdapterOptions = spawnInterfaceAdapterOptions;
|
|
12
18
|
}
|
|
13
19
|
async getServiceInfo(_cliConfig) {
|
|
14
20
|
this.#pluginService = new DefaultPluginService(this.#pluginManager);
|
|
@@ -17,5 +23,19 @@ export default class DefaultPluginServiceProvider {
|
|
|
17
23
|
commands: [new PluginGroupCommand()],
|
|
18
24
|
};
|
|
19
25
|
}
|
|
20
|
-
|
|
26
|
+
initService(context) {
|
|
27
|
+
if (!context.doesServiceExist(SPAWN_SERVICE_ID)) {
|
|
28
|
+
logger.debug("SpawnService not available, plugin manager will spawn processes directly");
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
}
|
|
31
|
+
if (!("setSpawn" in this.#pluginManager)) {
|
|
32
|
+
logger.debug("Plugin manager does not support SpawnCapable, skipping spawn injection");
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
const spawnService = context.getServiceById(SPAWN_SERVICE_ID);
|
|
36
|
+
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
37
|
+
const adapter = new SpawnInterfaceAdapter(spawnService, printerService, this.#spawnInterfaceAdapterOptions);
|
|
38
|
+
this.#pluginManager.setSpawn(adapter);
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
}
|
|
21
41
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PrinterService, SpawnService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
import type { SpawnInterface, SpawnResult } from "@flowscripter/dynamic-plugin-framework";
|
|
3
|
+
export interface SpawnInterfaceAdapterOptions {
|
|
4
|
+
quoteColor?: string;
|
|
5
|
+
markMinimumDisplayTimeMs?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Adapts a {@link SpawnService} to dynamic-plugin-framework's {@link SpawnInterface}, wrapping
|
|
9
|
+
* spawned process output in a quoted, marked block via {@link PrinterService} that is cleared
|
|
10
|
+
* again once the process exits (subject to {@link SpawnInterfaceAdapterOptions.markMinimumDisplayTimeMs}).
|
|
11
|
+
*/
|
|
12
|
+
export default class SpawnInterfaceAdapter implements SpawnInterface {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(spawnService: SpawnService, printerService: PrinterService, options?: SpawnInterfaceAdapterOptions);
|
|
15
|
+
spawn(command: ReadonlyArray<string>, options: {
|
|
16
|
+
cwd: string;
|
|
17
|
+
}): Promise<SpawnResult>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SpawnInterfaceAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpawnInterfaceAdapter.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/SpawnInterfaceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1F,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;gBAOhE,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE,4BAAiC;IAQ/B,KAAK,CAChB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GACvB,OAAO,CAAC,WAAW,CAAC;CA4BxB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapts a {@link SpawnService} to dynamic-plugin-framework's {@link SpawnInterface}, wrapping
|
|
3
|
+
* spawned process output in a quoted, marked block via {@link PrinterService} that is cleared
|
|
4
|
+
* again once the process exits (subject to {@link SpawnInterfaceAdapterOptions.markMinimumDisplayTimeMs}).
|
|
5
|
+
*/
|
|
6
|
+
export default class SpawnInterfaceAdapter {
|
|
7
|
+
#spawnService;
|
|
8
|
+
#printerService;
|
|
9
|
+
#quoteColor;
|
|
10
|
+
#markMinimumDisplayTimeMs;
|
|
11
|
+
constructor(spawnService, printerService, options = {}) {
|
|
12
|
+
this.#spawnService = spawnService;
|
|
13
|
+
this.#printerService = printerService;
|
|
14
|
+
this.#quoteColor = options.quoteColor;
|
|
15
|
+
this.#markMinimumDisplayTimeMs = options.markMinimumDisplayTimeMs ?? 1000;
|
|
16
|
+
}
|
|
17
|
+
async spawn(command, options) {
|
|
18
|
+
this.#printerService.startQuote(this.#quoteColor);
|
|
19
|
+
this.#printerService.startMark();
|
|
20
|
+
// onOutput is synchronous and may be called concurrently for stdout/stderr lines, but
|
|
21
|
+
// printerService.info() is async and must not be invoked concurrently with itself - queue
|
|
22
|
+
// writes so they're applied one at a time, in call order.
|
|
23
|
+
let writeQueue = Promise.resolve();
|
|
24
|
+
const onOutput = (line) => {
|
|
25
|
+
writeQueue = writeQueue.then(() => this.#printerService.info(`${line}\n`));
|
|
26
|
+
};
|
|
27
|
+
const result = await this.#spawnService.spawn(command, {
|
|
28
|
+
cwd: options.cwd,
|
|
29
|
+
stdio: "wrapped",
|
|
30
|
+
onOutput,
|
|
31
|
+
});
|
|
32
|
+
await writeQueue;
|
|
33
|
+
this.#printerService.endQuote();
|
|
34
|
+
this.#printerService.endMark();
|
|
35
|
+
await this.#printerService.clearMarked(this.#markMinimumDisplayTimeMs);
|
|
36
|
+
return result.ok
|
|
37
|
+
? { ok: true, exitCode: result.exitCode }
|
|
38
|
+
: { ok: false, exitCode: result.exitCode, error: result.error };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PrinterService, ShutdownService, SpawnOptions, SpawnResult, SpawnService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
export default class DefaultSpawnService implements SpawnService {
|
|
3
|
+
#private;
|
|
4
|
+
setDependencies(printerService: PrinterService, shutdownService: ShutdownService): void;
|
|
5
|
+
spawn(command: ReadonlyArray<string>, options?: SpawnOptions): Promise<SpawnResult>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=DefaultSpawnService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultSpawnService.d.ts","sourceRoot":"","sources":["../../../../src/service/spawn/DefaultSpawnService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,yCAAyC,CAAC;AAOjD,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,YAAY;;IAIvD,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,GAAG,IAAI;IAkCjF,KAAK,CAChB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC;CAiExB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import getLogger from "../../util/logger.js";
|
|
2
|
+
const logger = getLogger("DefaultSpawnService");
|
|
3
|
+
const SHUTDOWN_GRACE_PERIOD_MS = 5000;
|
|
4
|
+
export default class DefaultSpawnService {
|
|
5
|
+
#printerService;
|
|
6
|
+
#shutdownService;
|
|
7
|
+
setDependencies(printerService, shutdownService) {
|
|
8
|
+
this.#printerService = printerService;
|
|
9
|
+
this.#shutdownService = shutdownService;
|
|
10
|
+
}
|
|
11
|
+
async #pipeLines(stream, streamName, onOutput) {
|
|
12
|
+
if (typeof stream !== "object" || stream === null) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const decoder = new TextDecoder();
|
|
16
|
+
const reader = stream.getReader();
|
|
17
|
+
let buffer = "";
|
|
18
|
+
for (;;) {
|
|
19
|
+
const { done, value } = await reader.read();
|
|
20
|
+
if (done) {
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
buffer += decoder.decode(value, { stream: true });
|
|
24
|
+
let newlineIndex = buffer.indexOf("\n");
|
|
25
|
+
while (newlineIndex !== -1) {
|
|
26
|
+
onOutput(buffer.slice(0, newlineIndex), streamName);
|
|
27
|
+
buffer = buffer.slice(newlineIndex + 1);
|
|
28
|
+
newlineIndex = buffer.indexOf("\n");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (buffer.length > 0) {
|
|
32
|
+
onOutput(buffer, streamName);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async spawn(command, options = {}) {
|
|
36
|
+
if (this.#printerService === undefined || this.#shutdownService === undefined) {
|
|
37
|
+
throw new Error("DefaultSpawnService.spawn() called before setDependencies()");
|
|
38
|
+
}
|
|
39
|
+
const printerService = this.#printerService;
|
|
40
|
+
const shutdownService = this.#shutdownService;
|
|
41
|
+
const stdio = options.stdio ?? "inherit";
|
|
42
|
+
const longRunning = options.longRunning ?? true;
|
|
43
|
+
if (stdio === "inherit") {
|
|
44
|
+
await printerService.hideSpinner();
|
|
45
|
+
await printerService.hideAllProgressBars();
|
|
46
|
+
}
|
|
47
|
+
let proc;
|
|
48
|
+
try {
|
|
49
|
+
proc = Bun.spawn([...command], {
|
|
50
|
+
cwd: options.cwd,
|
|
51
|
+
stdin: stdio === "wrapped" ? "ignore" : "inherit",
|
|
52
|
+
stdout: stdio === "wrapped" ? "pipe" : "inherit",
|
|
53
|
+
stderr: stdio === "wrapped" ? "pipe" : "inherit",
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.debug(() => `Failed to launch command '${command.join(" ")}': ${error}`);
|
|
58
|
+
return { ok: false, error: error };
|
|
59
|
+
}
|
|
60
|
+
let settled = false;
|
|
61
|
+
if (longRunning) {
|
|
62
|
+
shutdownService.enterLongRunningMode();
|
|
63
|
+
}
|
|
64
|
+
shutdownService.addShutdownListener(async () => {
|
|
65
|
+
if (settled) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
logger.debug(() => `Sending SIGTERM to spawned command '${command.join(" ")}'`);
|
|
69
|
+
proc.kill("SIGTERM");
|
|
70
|
+
await Promise.race([
|
|
71
|
+
proc.exited.then(() => { }),
|
|
72
|
+
new Promise((resolve) => setTimeout(resolve, SHUTDOWN_GRACE_PERIOD_MS)),
|
|
73
|
+
]);
|
|
74
|
+
if (!settled) {
|
|
75
|
+
logger.debug(() => `Sending SIGKILL to spawned command '${command.join(" ")}'`);
|
|
76
|
+
proc.kill("SIGKILL");
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
if (stdio === "wrapped" && options.onOutput) {
|
|
80
|
+
const onOutput = options.onOutput;
|
|
81
|
+
void this.#pipeLines(proc.stdout, "stdout", onOutput);
|
|
82
|
+
void this.#pipeLines(proc.stderr, "stderr", onOutput);
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const exitCode = await proc.exited;
|
|
86
|
+
settled = true;
|
|
87
|
+
return exitCode === 0 ? { ok: true, exitCode } : { ok: false, exitCode };
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
if (longRunning) {
|
|
91
|
+
shutdownService.leaveLongRunningMode();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ServiceInfo, ServiceProvider } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
import type { Context } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
|
+
import type { CLIConfig } from "@flowscripter/dynamic-cli-framework-api";
|
|
4
|
+
export default class SpawnServiceProvider implements ServiceProvider {
|
|
5
|
+
#private;
|
|
6
|
+
readonly serviceId: string;
|
|
7
|
+
readonly servicePriority: number;
|
|
8
|
+
constructor(servicePriority: number);
|
|
9
|
+
getServiceInfo(_cliConfig: CLIConfig): Promise<ServiceInfo>;
|
|
10
|
+
initService(context: Context): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=SpawnServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpawnServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/spawn/SpawnServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,eAAe;;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAoB;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAGd,eAAe,EAAE,MAAM;IAInC,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAMpD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PRINTER_SERVICE_ID, SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
import { SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
|
+
import DefaultSpawnService from "./DefaultSpawnService.js";
|
|
4
|
+
export default class SpawnServiceProvider {
|
|
5
|
+
serviceId = SPAWN_SERVICE_ID;
|
|
6
|
+
servicePriority;
|
|
7
|
+
#spawnService;
|
|
8
|
+
constructor(servicePriority) {
|
|
9
|
+
this.servicePriority = servicePriority;
|
|
10
|
+
}
|
|
11
|
+
getServiceInfo(_cliConfig) {
|
|
12
|
+
this.#spawnService = new DefaultSpawnService();
|
|
13
|
+
return Promise.resolve({
|
|
14
|
+
service: this.#spawnService,
|
|
15
|
+
commands: [],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
initService(context) {
|
|
19
|
+
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
20
|
+
const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID);
|
|
21
|
+
this.#spawnService.setDependencies(printerService, shutdownService);
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CLIConfig, SpawnService, UpgradeCheckResult, UpgradeResult } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
|
+
import { InstallMethod, SupportedArch, SupportedOs, type UpgradeService } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
|
+
import type { UpgradeLocationsConfig } from "./UpgradeLocationsConfig.ts";
|
|
4
|
+
export default class DefaultUpgradeService implements UpgradeService {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(config: UpgradeLocationsConfig, cliConfig: CLIConfig);
|
|
7
|
+
setDependencies(spawnService: SpawnService): void;
|
|
8
|
+
detectOs(): SupportedOs | undefined;
|
|
9
|
+
detectArch(): SupportedArch | undefined;
|
|
10
|
+
detectInstallMethod(os: SupportedOs): Promise<InstallMethod | undefined>;
|
|
11
|
+
checkForUpgrade(osOverride?: SupportedOs, archOverride?: SupportedArch, installMethodOverride?: InstallMethod): Promise<UpgradeCheckResult | undefined>;
|
|
12
|
+
upgrade(osOverride?: SupportedOs, archOverride?: SupportedArch, installMethodOverride?: InstallMethod): Promise<UpgradeResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=DefaultUpgradeService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultUpgradeService.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/DefaultUpgradeService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAW1E,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;gBAK/C,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS;IAKhE,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAIjD,QAAQ,IAAI,WAAW,GAAG,SAAS;IAanC,UAAU,IAAI,aAAa,GAAG,SAAS;IAWjC,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgBxE,eAAe,CAC1B,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAmC7B,OAAO,CAClB,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,aAAa,CAAC;CA6P1B"}
|