@flowscripter/dynamic-cli-framework 7.0.10 → 7.0.11
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/src/cli/BaseCLI.d.ts.map +1 -1
- package/dist/src/cli/BaseCLI.js +18 -22
- package/dist/src/runtime/lifecycle/priorities.d.ts +50 -0
- package/dist/src/runtime/lifecycle/priorities.d.ts.map +1 -0
- package/dist/src/runtime/lifecycle/priorities.js +49 -0
- package/dist/src/service/configuration/KeyValueServiceProvider.d.ts.map +1 -1
- package/dist/src/service/configuration/KeyValueServiceProvider.js +2 -3
- package/dist/src/service/fetch/DefaultFetchService.d.ts.map +1 -1
- package/dist/src/service/fetch/DefaultFetchService.js +2 -1
- package/dist/src/service/printer/PrinterServiceProvider.d.ts.map +1 -1
- package/dist/src/service/printer/PrinterServiceProvider.js +2 -1
- package/dist/src/service/spawn/DefaultSpawnService.d.ts.map +1 -1
- package/dist/src/service/spawn/DefaultSpawnService.js +2 -1
- package/dist/src/service/upgrade/UpgradeServiceProvider.d.ts +15 -0
- package/dist/src/service/upgrade/UpgradeServiceProvider.d.ts.map +1 -1
- package/dist/src/service/upgrade/UpgradeServiceProvider.js +32 -3
- package/dist/src/startup/banner/bannerStartupTask.d.ts +5 -5
- package/dist/src/startup/banner/bannerStartupTask.js +5 -5
- package/index.ts +20 -0
- package/package.json +1 -1
- package/src/cli/BaseCLI.ts +60 -21
- package/src/runtime/lifecycle/priorities.ts +67 -0
- package/src/service/configuration/KeyValueServiceProvider.ts +2 -3
- package/src/service/fetch/DefaultFetchService.ts +2 -1
- package/src/service/printer/PrinterServiceProvider.ts +2 -1
- package/src/service/spawn/DefaultSpawnService.ts +2 -1
- package/src/service/upgrade/UpgradeServiceProvider.ts +37 -3
- package/src/startup/banner/bannerStartupTask.ts +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -120,6 +120,7 @@ export { PLUGIN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
|
120
120
|
export type { PluginService } from "@flowscripter/dynamic-cli-framework-api";
|
|
121
121
|
export { default as PluginServiceProvider } from "./src/service/plugin/PluginServiceProvider.ts";
|
|
122
122
|
export { default as BaseCLI } from "./src/cli/BaseCLI.ts";
|
|
123
|
+
export { SHUTDOWN_SERVICE_PRIORITY, STARTUP_SERVICE_PRIORITY, CONFIGURATION_SERVICE_PRIORITY, KEY_VALUE_SERVICE_PRIORITY, PRINTER_SERVICE_PRIORITY, PROMPTER_SERVICE_PRIORITY, TABLE_GENERATOR_SERVICE_PRIORITY, ARGUMENT_PROMPTER_SERVICE_PRIORITY, SPAWN_SERVICE_PRIORITY, FETCH_SERVICE_PRIORITY, UPGRADE_SERVICE_PRIORITY, UPGRADE_CHECK_STARTUP_TASK_PRIORITY, IMAGE_PRINTER_SERVICE_PRIORITY, PLUGIN_SERVICE_PRIORITY, AUTO_UPGRADE_STARTUP_TASK_PRIORITY, COMPLETION_SERVICE_PRIORITY, CLEANUP_SHUTDOWN_TASK_PRIORITY, KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY, } from "./src/runtime/lifecycle/priorities.ts";
|
|
123
124
|
export { default as DefaultRuntimeCLI } from "./src/cli/DefaultRuntimeCLI.ts";
|
|
124
125
|
export type { default as Terminal } from "./src/terminal/Terminal.ts";
|
|
125
126
|
export type { default as Styler } from "./src/terminal/Styler.ts";
|
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
|
@@ -74,6 +74,7 @@ export { PLUGIN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
|
74
74
|
export { default as PluginServiceProvider } from "./src/service/plugin/PluginServiceProvider.js";
|
|
75
75
|
// Core CLI
|
|
76
76
|
export { default as BaseCLI } from "./src/cli/BaseCLI.js";
|
|
77
|
+
export { SHUTDOWN_SERVICE_PRIORITY, STARTUP_SERVICE_PRIORITY, CONFIGURATION_SERVICE_PRIORITY, KEY_VALUE_SERVICE_PRIORITY, PRINTER_SERVICE_PRIORITY, PROMPTER_SERVICE_PRIORITY, TABLE_GENERATOR_SERVICE_PRIORITY, ARGUMENT_PROMPTER_SERVICE_PRIORITY, SPAWN_SERVICE_PRIORITY, FETCH_SERVICE_PRIORITY, UPGRADE_SERVICE_PRIORITY, UPGRADE_CHECK_STARTUP_TASK_PRIORITY, IMAGE_PRINTER_SERVICE_PRIORITY, PLUGIN_SERVICE_PRIORITY, AUTO_UPGRADE_STARTUP_TASK_PRIORITY, COMPLETION_SERVICE_PRIORITY, CLEANUP_SHUTDOWN_TASK_PRIORITY, KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY, } from "./src/runtime/lifecycle/priorities.js";
|
|
77
78
|
export { default as DefaultRuntimeCLI } from "./src/cli/DefaultRuntimeCLI.js";
|
|
78
79
|
export { SpecialKey } from "./src/terminal/KeyReader.js";
|
|
79
80
|
export { default as TtyKeyReader } from "./src/terminal/TtyKeyReader.js";
|
|
@@ -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;AAsBzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAS3E,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;AAsBzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAS3E,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;AAqCpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;IAazC,YACE,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,EAkEhC;IAED;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe,QAEzD;IAED;;;;;;;;OAQG;IACH;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,WAAW,QAEtC;IAEM,UAAU,CAAC,OAAO,EAAE,OAAO,QAQjC;IAEK,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA8PzD;CACF"}
|
package/dist/src/cli/BaseCLI.js
CHANGED
|
@@ -29,8 +29,9 @@ import CompletionServiceProvider from "../service/completion/CompletionServicePr
|
|
|
29
29
|
import ImagePrinterServiceProvider from "../service/imagePrinter/ImagePrinterServiceProvider.js";
|
|
30
30
|
import SpawnServiceProvider from "../service/spawn/SpawnServiceProvider.js";
|
|
31
31
|
import FetchServiceProvider from "../service/fetch/FetchServiceProvider.js";
|
|
32
|
-
import UpgradeServiceProvider, { createUpgradeCheckStartupTask, } from "../service/upgrade/UpgradeServiceProvider.js";
|
|
32
|
+
import UpgradeServiceProvider, { createAutoUpgradeStartupTask, createUpgradeCheckStartupTask, } from "../service/upgrade/UpgradeServiceProvider.js";
|
|
33
33
|
import PluginServiceProvider from "../service/plugin/PluginServiceProvider.js";
|
|
34
|
+
import { ARGUMENT_PROMPTER_SERVICE_PRIORITY, AUTO_UPGRADE_STARTUP_TASK_PRIORITY, COMPLETION_SERVICE_PRIORITY, CONFIGURATION_SERVICE_PRIORITY, FETCH_SERVICE_PRIORITY, IMAGE_PRINTER_SERVICE_PRIORITY, KEY_VALUE_SERVICE_PRIORITY, PLUGIN_SERVICE_PRIORITY, PRINTER_SERVICE_PRIORITY, PROMPTER_SERVICE_PRIORITY, SHUTDOWN_SERVICE_PRIORITY, SPAWN_SERVICE_PRIORITY, STARTUP_SERVICE_PRIORITY, TABLE_GENERATOR_SERVICE_PRIORITY, UPGRADE_CHECK_STARTUP_TASK_PRIORITY, UPGRADE_SERVICE_PRIORITY, } from "../runtime/lifecycle/priorities.js";
|
|
34
35
|
const logger = getLogger("BaseCLI");
|
|
35
36
|
/**
|
|
36
37
|
* Base implementation of a {@link CLI}.
|
|
@@ -128,9 +129,7 @@ export default class BaseCLI {
|
|
|
128
129
|
this.#commandRegistry = new DefaultCommandRegistry([], commandValidator);
|
|
129
130
|
// create a context
|
|
130
131
|
this.#context = new DefaultContext(this.#cliConfig);
|
|
131
|
-
|
|
132
|
-
// dependency on anything since its own initService() is a no-op.
|
|
133
|
-
this.#startupServiceProvider = new StartupServiceProvider(95);
|
|
132
|
+
this.#startupServiceProvider = new StartupServiceProvider(STARTUP_SERVICE_PRIORITY);
|
|
134
133
|
this.#stdoutTerminal = stdoutTerminal;
|
|
135
134
|
this.#printerService = new DefaultPrinterService(stdoutWritableStream, stderrWritableStream, stdoutIsColor, stderrIsColor, stdoutTerminal, stderrTerminal, styler);
|
|
136
135
|
}
|
|
@@ -182,10 +181,10 @@ export default class BaseCLI {
|
|
|
182
181
|
throw new Error("If only one command is added, it must be a global command, sub-command, or group command!");
|
|
183
182
|
}
|
|
184
183
|
// create and add core services
|
|
185
|
-
this.addServiceProvider(new ShutdownServiceProvider(
|
|
184
|
+
this.addServiceProvider(new ShutdownServiceProvider(SHUTDOWN_SERVICE_PRIORITY));
|
|
186
185
|
this.addServiceProvider(this.#startupServiceProvider);
|
|
187
|
-
this.addServiceProvider(new PrinterServiceProvider(
|
|
188
|
-
this.addServiceProvider(new TableGeneratorServiceProvider(
|
|
186
|
+
this.addServiceProvider(new PrinterServiceProvider(PRINTER_SERVICE_PRIORITY, this.#printerService));
|
|
187
|
+
this.addServiceProvider(new TableGeneratorServiceProvider(TABLE_GENERATOR_SERVICE_PRIORITY));
|
|
189
188
|
const canPrompt = this.#keyReader !== undefined && this.#stderrTerminal.isTty();
|
|
190
189
|
if (this.#options.promptingEnabled && !canPrompt) {
|
|
191
190
|
throw new Error("promptingEnabled requires a keyReader and a TTY stderr terminal");
|
|
@@ -194,7 +193,7 @@ export default class BaseCLI {
|
|
|
194
193
|
if (canPrompt) {
|
|
195
194
|
prompterService = new DefaultPrompterService(DEFAULT_PROMPTER_CONFIG, this.#stderrTerminal, this.#keyReader, this.#printerService);
|
|
196
195
|
prompterService.promptEnabled = this.#options.promptingEnabled;
|
|
197
|
-
this.addServiceProvider(new PrompterServiceProvider(
|
|
196
|
+
this.addServiceProvider(new PrompterServiceProvider(PROMPTER_SERVICE_PRIORITY, prompterService));
|
|
198
197
|
}
|
|
199
198
|
else {
|
|
200
199
|
logger.debug(() => `Skipping PrompterServiceProvider: keyReader present: ${this.#keyReader !== undefined}, stderr isTty: ${this.#stderrTerminal.isTty()}`);
|
|
@@ -202,7 +201,7 @@ export default class BaseCLI {
|
|
|
202
201
|
if (this.#options.argumentPrompterServiceEnabled) {
|
|
203
202
|
if (prompterService !== undefined) {
|
|
204
203
|
const argumentPrompterService = new DefaultArgumentPrompterService(prompterService);
|
|
205
|
-
this.addServiceProvider(new ArgumentPrompterServiceProvider(
|
|
204
|
+
this.addServiceProvider(new ArgumentPrompterServiceProvider(ARGUMENT_PROMPTER_SERVICE_PRIORITY, argumentPrompterService));
|
|
206
205
|
}
|
|
207
206
|
else {
|
|
208
207
|
logger.debug("Skipping ArgumentPrompterServiceProvider: argumentPrompterServiceEnabled is true but prompting is unavailable");
|
|
@@ -210,7 +209,7 @@ export default class BaseCLI {
|
|
|
210
209
|
}
|
|
211
210
|
if (this.#options.imagePrinterServiceEnabled) {
|
|
212
211
|
if (this.#stdoutTerminal.isTty()) {
|
|
213
|
-
this.addServiceProvider(new ImagePrinterServiceProvider(
|
|
212
|
+
this.addServiceProvider(new ImagePrinterServiceProvider(IMAGE_PRINTER_SERVICE_PRIORITY, this.#stdoutTerminal));
|
|
214
213
|
}
|
|
215
214
|
else {
|
|
216
215
|
logger.debug("Skipping ImagePrinterServiceProvider: imagePrinterServiceEnabled is true but stdout is not a TTY");
|
|
@@ -219,30 +218,26 @@ export default class BaseCLI {
|
|
|
219
218
|
// The plugin service routes package manager output through SpawnService so that it is
|
|
220
219
|
// quoted, marked and cleared on success; enabling plugins therefore also enables spawning.
|
|
221
220
|
if (this.#options.spawnServiceEnabled || this.#options.pluginServiceEnabled) {
|
|
222
|
-
this.addServiceProvider(new SpawnServiceProvider(
|
|
221
|
+
this.addServiceProvider(new SpawnServiceProvider(SPAWN_SERVICE_PRIORITY));
|
|
223
222
|
}
|
|
224
223
|
if (this.#options.fetchServiceEnabled) {
|
|
225
|
-
this.addServiceProvider(new FetchServiceProvider(
|
|
224
|
+
this.addServiceProvider(new FetchServiceProvider(FETCH_SERVICE_PRIORITY));
|
|
226
225
|
}
|
|
227
226
|
if (this.#options.completionServiceEnabled) {
|
|
228
227
|
const completionService = new DefaultCompletionService();
|
|
229
|
-
this.addServiceProvider(new CompletionServiceProvider(
|
|
228
|
+
this.addServiceProvider(new CompletionServiceProvider(COMPLETION_SERVICE_PRIORITY, completionService, this.#commandRegistry));
|
|
230
229
|
}
|
|
231
230
|
let upgradeServiceProvider;
|
|
232
231
|
if (this.#options.upgradeServiceEnabled) {
|
|
233
|
-
|
|
234
|
-
// but before the consumer-configured Banner/Plugin(50) priority band.
|
|
235
|
-
upgradeServiceProvider = new UpgradeServiceProvider(56, this.#options.upgradeLocationsConfig);
|
|
232
|
+
upgradeServiceProvider = new UpgradeServiceProvider(UPGRADE_SERVICE_PRIORITY, this.#options.upgradeLocationsConfig);
|
|
236
233
|
this.addServiceProvider(upgradeServiceProvider);
|
|
237
234
|
}
|
|
238
235
|
if (this.#options.pluginServiceEnabled) {
|
|
239
|
-
this.addServiceProvider(new PluginServiceProvider(
|
|
236
|
+
this.addServiceProvider(new PluginServiceProvider(PLUGIN_SERVICE_PRIORITY, this.#options.pluginServiceRemoteConfig, this.#options.pluginServiceLocalConfig, this.#commandRegistry, this.#serviceProviderRegistry));
|
|
240
237
|
}
|
|
241
|
-
const configurationServiceProvider = new ConfigurationServiceProvider(
|
|
238
|
+
const configurationServiceProvider = new ConfigurationServiceProvider(CONFIGURATION_SERVICE_PRIORITY, this.#options.envVarsSupportEnabled, this.#options.configFileSupportEnabled, this.#options.secretServiceEnabled);
|
|
242
239
|
this.addServiceProvider(configurationServiceProvider);
|
|
243
|
-
|
|
244
|
-
// happens in its own initService(), before KeyValueServiceProvider's initService() runs.
|
|
245
|
-
const keyValueServiceProvider = new KeyValueServiceProvider(89, configurationServiceProvider, this.#options.keyValueServiceEnabled, this.#options.secretServiceEnabled);
|
|
240
|
+
const keyValueServiceProvider = new KeyValueServiceProvider(KEY_VALUE_SERVICE_PRIORITY, configurationServiceProvider, this.#options.keyValueServiceEnabled, this.#options.secretServiceEnabled);
|
|
246
241
|
this.addServiceProvider(keyValueServiceProvider);
|
|
247
242
|
for (const serviceProvider of this.#serviceProviderRegistry.getServiceProviders()) {
|
|
248
243
|
const serviceInfo = await serviceProvider.getServiceInfo(this.#cliConfig);
|
|
@@ -254,7 +249,8 @@ export default class BaseCLI {
|
|
|
254
249
|
});
|
|
255
250
|
}
|
|
256
251
|
if (upgradeServiceProvider?.upgradeService) {
|
|
257
|
-
this.addStartupTask(createUpgradeCheckStartupTask(upgradeServiceProvider.upgradeService,
|
|
252
|
+
this.addStartupTask(createUpgradeCheckStartupTask(upgradeServiceProvider.upgradeService, UPGRADE_CHECK_STARTUP_TASK_PRIORITY));
|
|
253
|
+
this.addStartupTask(createAutoUpgradeStartupTask(upgradeServiceProvider, AUTO_UPGRADE_STARTUP_TASK_PRIORITY));
|
|
258
254
|
}
|
|
259
255
|
// directly-registered StartupTasks (e.g. the banner task) aren't backed by a ServiceProvider,
|
|
260
256
|
// so their modifierCommands need to be added to the command registry here instead, keyed by
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priorities of the framework's built-in service providers, startup tasks and shutdown tasks.
|
|
3
|
+
* Higher values run earlier (see {@link sortByPriority}). Service provider priorities also order
|
|
4
|
+
* their `initService()` calls within the startup sequence: when a provider and a directly
|
|
5
|
+
* registered startup task share a priority, the provider runs first.
|
|
6
|
+
*
|
|
7
|
+
* Consumer service providers and startup tasks (e.g. the banner task) choose their own
|
|
8
|
+
* priorities relative to these.
|
|
9
|
+
*/
|
|
10
|
+
/** Shutdown service provider: first, so signal handling is in place before anything else. */
|
|
11
|
+
export declare const SHUTDOWN_SERVICE_PRIORITY = 100;
|
|
12
|
+
/** Startup service provider: no ordering dependency, as its `initService()` is a no-op. */
|
|
13
|
+
export declare const STARTUP_SERVICE_PRIORITY = 95;
|
|
14
|
+
/** Configuration service provider: reads the config file in its `initService()`. */
|
|
15
|
+
export declare const CONFIGURATION_SERVICE_PRIORITY = 90;
|
|
16
|
+
/** Key-value service provider: just below configuration, whose config-file read it depends on. */
|
|
17
|
+
export declare const KEY_VALUE_SERVICE_PRIORITY = 89;
|
|
18
|
+
/** Printer service provider. */
|
|
19
|
+
export declare const PRINTER_SERVICE_PRIORITY = 80;
|
|
20
|
+
/** Prompter service provider. */
|
|
21
|
+
export declare const PROMPTER_SERVICE_PRIORITY = 75;
|
|
22
|
+
/** Table generator service provider. */
|
|
23
|
+
export declare const TABLE_GENERATOR_SERVICE_PRIORITY = 70;
|
|
24
|
+
/** Argument prompter service provider: below the prompter it uses. */
|
|
25
|
+
export declare const ARGUMENT_PROMPTER_SERVICE_PRIORITY = 65;
|
|
26
|
+
/** Spawn service provider. */
|
|
27
|
+
export declare const SPAWN_SERVICE_PRIORITY = 58;
|
|
28
|
+
/** Fetch service provider. */
|
|
29
|
+
export declare const FETCH_SERVICE_PRIORITY = 57;
|
|
30
|
+
/** Upgrade service provider: below the spawn and fetch services it uses. */
|
|
31
|
+
export declare const UPGRADE_SERVICE_PRIORITY = 56;
|
|
32
|
+
/** Background startup task which refreshes the cached upgrade check result. */
|
|
33
|
+
export declare const UPGRADE_CHECK_STARTUP_TASK_PRIORITY = 56;
|
|
34
|
+
/** Image printer service provider. */
|
|
35
|
+
export declare const IMAGE_PRINTER_SERVICE_PRIORITY = 55;
|
|
36
|
+
/** Plugin service provider. */
|
|
37
|
+
export declare const PLUGIN_SERVICE_PRIORITY = 50;
|
|
38
|
+
/**
|
|
39
|
+
* Startup task which prompts to enable automatic upgrades and performs them. It runs below
|
|
40
|
+
* consumer startup tasks such as the banner (typically 45 or more) and above the completion
|
|
41
|
+
* prompt.
|
|
42
|
+
*/
|
|
43
|
+
export declare const AUTO_UPGRADE_STARTUP_TASK_PRIORITY = 10;
|
|
44
|
+
/** Completion service provider, whose `initService()` prompts to enable shell completion. */
|
|
45
|
+
export declare const COMPLETION_SERVICE_PRIORITY = 5;
|
|
46
|
+
/** Shutdown tasks which clean up in-flight work (spinners, progress bars, spawns, fetches). */
|
|
47
|
+
export declare const CLEANUP_SHUTDOWN_TASK_PRIORITY = 0;
|
|
48
|
+
/** Shutdown task which flushes key-value data to the config file, after all other cleanup. */
|
|
49
|
+
export declare const KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY = -100;
|
|
50
|
+
//# sourceMappingURL=priorities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priorities.d.ts","sourceRoot":"","sources":["../../../../src/runtime/lifecycle/priorities.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,oFAAoF;AACpF,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,gCAAgC;AAChC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,iCAAiC;AACjC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,wCAAwC;AACxC,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,sEAAsE;AACtE,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,8BAA8B;AAC9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,+EAA+E;AAC/E,eAAO,MAAM,mCAAmC,KAAK,CAAC;AAEtD,sCAAsC;AACtC,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,+BAA+B;AAC/B,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,6FAA6F;AAC7F,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,+FAA+F;AAC/F,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,8FAA8F;AAC9F,eAAO,MAAM,sCAAsC,OAAO,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priorities of the framework's built-in service providers, startup tasks and shutdown tasks.
|
|
3
|
+
* Higher values run earlier (see {@link sortByPriority}). Service provider priorities also order
|
|
4
|
+
* their `initService()` calls within the startup sequence: when a provider and a directly
|
|
5
|
+
* registered startup task share a priority, the provider runs first.
|
|
6
|
+
*
|
|
7
|
+
* Consumer service providers and startup tasks (e.g. the banner task) choose their own
|
|
8
|
+
* priorities relative to these.
|
|
9
|
+
*/
|
|
10
|
+
/** Shutdown service provider: first, so signal handling is in place before anything else. */
|
|
11
|
+
export const SHUTDOWN_SERVICE_PRIORITY = 100;
|
|
12
|
+
/** Startup service provider: no ordering dependency, as its `initService()` is a no-op. */
|
|
13
|
+
export const STARTUP_SERVICE_PRIORITY = 95;
|
|
14
|
+
/** Configuration service provider: reads the config file in its `initService()`. */
|
|
15
|
+
export const CONFIGURATION_SERVICE_PRIORITY = 90;
|
|
16
|
+
/** Key-value service provider: just below configuration, whose config-file read it depends on. */
|
|
17
|
+
export const KEY_VALUE_SERVICE_PRIORITY = 89;
|
|
18
|
+
/** Printer service provider. */
|
|
19
|
+
export const PRINTER_SERVICE_PRIORITY = 80;
|
|
20
|
+
/** Prompter service provider. */
|
|
21
|
+
export const PROMPTER_SERVICE_PRIORITY = 75;
|
|
22
|
+
/** Table generator service provider. */
|
|
23
|
+
export const TABLE_GENERATOR_SERVICE_PRIORITY = 70;
|
|
24
|
+
/** Argument prompter service provider: below the prompter it uses. */
|
|
25
|
+
export const ARGUMENT_PROMPTER_SERVICE_PRIORITY = 65;
|
|
26
|
+
/** Spawn service provider. */
|
|
27
|
+
export const SPAWN_SERVICE_PRIORITY = 58;
|
|
28
|
+
/** Fetch service provider. */
|
|
29
|
+
export const FETCH_SERVICE_PRIORITY = 57;
|
|
30
|
+
/** Upgrade service provider: below the spawn and fetch services it uses. */
|
|
31
|
+
export const UPGRADE_SERVICE_PRIORITY = 56;
|
|
32
|
+
/** Background startup task which refreshes the cached upgrade check result. */
|
|
33
|
+
export const UPGRADE_CHECK_STARTUP_TASK_PRIORITY = 56;
|
|
34
|
+
/** Image printer service provider. */
|
|
35
|
+
export const IMAGE_PRINTER_SERVICE_PRIORITY = 55;
|
|
36
|
+
/** Plugin service provider. */
|
|
37
|
+
export const PLUGIN_SERVICE_PRIORITY = 50;
|
|
38
|
+
/**
|
|
39
|
+
* Startup task which prompts to enable automatic upgrades and performs them. It runs below
|
|
40
|
+
* consumer startup tasks such as the banner (typically 45 or more) and above the completion
|
|
41
|
+
* prompt.
|
|
42
|
+
*/
|
|
43
|
+
export const AUTO_UPGRADE_STARTUP_TASK_PRIORITY = 10;
|
|
44
|
+
/** Completion service provider, whose `initService()` prompts to enable shell completion. */
|
|
45
|
+
export const COMPLETION_SERVICE_PRIORITY = 5;
|
|
46
|
+
/** Shutdown tasks which clean up in-flight work (spinners, progress bars, spawns, fetches). */
|
|
47
|
+
export const CLEANUP_SHUTDOWN_TASK_PRIORITY = 0;
|
|
48
|
+
/** Shutdown task which flushes key-value data to the config file, after all other cleanup. */
|
|
49
|
+
export const KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY = -100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyValueServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/configuration/KeyValueServiceProvider.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;AACzE,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,yCAAyC,CAAC;AAIjD,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"KeyValueServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/configuration/KeyValueServiceProvider.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;AACzE,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,yCAAyC,CAAC;AAIjD,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAgClF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAwB,YAAW,eAAe;;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAwB;IAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAIjC,SAAgB,sBAAsB,EAAE,OAAO,CAAC;IAChD,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAW9C;;;;;;;;OAQG;IACH,YACE,eAAe,EAAE,MAAM,EACvB,4BAA4B,EAAE,4BAA4B,EAC1D,sBAAsB,UAAQ,EAC9B,oBAAoB,UAAQ,EAY7B;IAEM,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAUhE;IAED;;;;;;;;;;OAUG;IACI,wBAAwB,CAC7B,SAAS,EAAE,wBAAwB,EACnC,QAAQ,EAAE,MAAM,GACf,eAAe,CAsBjB;IAED;;;;;;;;;;;;;;OAcG;IACI,kBAAkB,CACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,wBAAwB,EACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAaT;IAeY,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CASxD;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { KEY_VALUE_SERVICE_ID, SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
2
|
import DefaultKeyValueService from "./DefaultKeyValueService.js";
|
|
3
3
|
import DefaultSecretService from "./DefaultSecretService.js";
|
|
4
|
+
import { KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.js";
|
|
4
5
|
/**
|
|
5
6
|
* Registered under {@link KEY_VALUE_SERVICE_ID} in the plain, undecorated {@link Context} purely
|
|
6
7
|
* so {@link Context.doesServiceExist} reports correctly - every real access goes through a
|
|
@@ -198,9 +199,7 @@ export default class KeyValueServiceProvider {
|
|
|
198
199
|
const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID);
|
|
199
200
|
shutdownService.registerTask({
|
|
200
201
|
id: `${KEY_VALUE_SERVICE_ID}-flush`,
|
|
201
|
-
|
|
202
|
-
// other shutdown cleanup (which defaults to priority 0).
|
|
203
|
-
priority: -100,
|
|
202
|
+
priority: KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY,
|
|
204
203
|
run: () => this.#flushDirtyScopes(),
|
|
205
204
|
});
|
|
206
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultFetchService.d.ts","sourceRoot":"","sources":["../../../../src/service/fetch/DefaultFetchService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,YAAY,EAEb,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultFetchService.d.ts","sourceRoot":"","sources":["../../../../src/service/fetch/DefaultFetchService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,YAAY,EAEb,MAAM,yCAAyC,CAAC;AAOjD,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,YAAY;;IAGvD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAExC;IAEY,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyCrF;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
2
|
import getLogger from "../../util/logger.js";
|
|
3
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.js";
|
|
3
4
|
const logger = getLogger("DefaultFetchService");
|
|
4
5
|
export default class DefaultFetchService {
|
|
5
6
|
#context;
|
|
@@ -26,7 +27,7 @@ export default class DefaultFetchService {
|
|
|
26
27
|
shutdownService.enterLongRunningMode();
|
|
27
28
|
shutdownService.registerTask({
|
|
28
29
|
id: `fetch:${input.toString()}`,
|
|
29
|
-
priority:
|
|
30
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
30
31
|
run: async () => {
|
|
31
32
|
if (settled) {
|
|
32
33
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrinterServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/printer/PrinterServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAK9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"PrinterServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/printer/PrinterServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAK9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,eAAe;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAsB;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;;;OAKG;IACH,YAAmB,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAGzE;IAEM,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAUjE;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3C;CACF"}
|
|
@@ -4,6 +4,7 @@ import DarkModeCommand from "./command/DarkModeCommand.js";
|
|
|
4
4
|
import NoColorCommand from "./command/NoColorCommand.js";
|
|
5
5
|
import NoHyperlinksCommand from "./command/NoHyperlinksCommand.js";
|
|
6
6
|
import { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
7
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.js";
|
|
7
8
|
/**
|
|
8
9
|
* Provides a {@link PrinterService}.
|
|
9
10
|
*/
|
|
@@ -36,7 +37,7 @@ export default class PrinterServiceProvider {
|
|
|
36
37
|
const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID);
|
|
37
38
|
shutdownService.registerTask({
|
|
38
39
|
id: PRINTER_SERVICE_ID,
|
|
39
|
-
priority:
|
|
40
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
40
41
|
run: async () => {
|
|
41
42
|
await this.printerService.hideSpinner();
|
|
42
43
|
await this.printerService.hideAllProgressBars();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSpawnService.d.ts","sourceRoot":"","sources":["../../../../src/service/spawn/DefaultSpawnService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAGP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultSpawnService.d.ts","sourceRoot":"","sources":["../../../../src/service/spawn/DefaultSpawnService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAGP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,yCAAyC,CAAC;AASjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAa3E;AAED,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,YAAY;;IAGvD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAExC;IA+CY,KAAK,CAChB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA0FtB;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import { PRINTER_SERVICE_ID, SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
3
|
import getLogger from "../../util/logger.js";
|
|
4
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.js";
|
|
4
5
|
const logger = getLogger("DefaultSpawnService");
|
|
5
6
|
const SHUTDOWN_GRACE_PERIOD_MS = 5000;
|
|
6
7
|
/**
|
|
@@ -94,7 +95,7 @@ export default class DefaultSpawnService {
|
|
|
94
95
|
}
|
|
95
96
|
shutdownService.registerTask({
|
|
96
97
|
id: `spawn:${command.join(" ")}`,
|
|
97
|
-
priority:
|
|
98
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
98
99
|
run: async () => {
|
|
99
100
|
if (settled) {
|
|
100
101
|
return;
|
|
@@ -11,6 +11,13 @@ import type { StartupTask } from "@flowscripter/dynamic-cli-framework-api";
|
|
|
11
11
|
* regular blocking init task) so it can run in `"background"` mode.
|
|
12
12
|
*/
|
|
13
13
|
export declare function createUpgradeCheckStartupTask(upgradeService: DefaultUpgradeService, priority: number): StartupTask;
|
|
14
|
+
/**
|
|
15
|
+
* Build the blocking {@link StartupTask} which offers to enable automatic upgrades and, when they
|
|
16
|
+
* are enabled, checks for and installs a newer version (see
|
|
17
|
+
* {@link UpgradeServiceProvider.runAutoUpgrade}). It is registered separately from the provider's
|
|
18
|
+
* own init task so it can run at a lower priority, after consumer startup tasks such as the banner.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createAutoUpgradeStartupTask(provider: UpgradeServiceProvider, priority: number): StartupTask;
|
|
14
21
|
export default class UpgradeServiceProvider implements ServiceProvider {
|
|
15
22
|
#private;
|
|
16
23
|
readonly serviceId: string;
|
|
@@ -19,5 +26,13 @@ export default class UpgradeServiceProvider implements ServiceProvider {
|
|
|
19
26
|
get upgradeService(): DefaultUpgradeService | undefined;
|
|
20
27
|
getServiceInfo(cliConfig: CLIConfig): Promise<ServiceInfo>;
|
|
21
28
|
initService(context: Context): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Offer to enable automatic upgrades (storing the answer as `upgrade-status` in the upgrade
|
|
31
|
+
* service's scope) and, when they are enabled, check for and install a newer version. Must be
|
|
32
|
+
* called after {@link initService}.
|
|
33
|
+
*
|
|
34
|
+
* @param context the startup task's context, used to look up the Prompter and Printer services.
|
|
35
|
+
*/
|
|
36
|
+
runAutoUpgrade(context: Context): Promise<void>;
|
|
22
37
|
}
|
|
23
38
|
//# sourceMappingURL=UpgradeServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/UpgradeServiceProvider.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;AAYzE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAI3E;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,qBAAqB,EACrC,QAAQ,EAAE,MAAM,GACf,WAAW,CASb;AAED,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,eAAe;;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAsB;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"UpgradeServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/UpgradeServiceProvider.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;AAYzE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAI3E;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,qBAAqB,EACrC,QAAQ,EAAE,MAAM,GACf,WAAW,CASb;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,MAAM,GACf,WAAW,CAOb;AAED,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,eAAe;;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAsB;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAMjC,YAAmB,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAGzE;IAED,IAAW,cAAc,IAAI,qBAAqB,GAAG,SAAS,CAE7D;IAEM,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAOhE;IAEM,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlD;IAED;;;;;;OAMG;IACU,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE3D;CAoCF"}
|
|
@@ -24,12 +24,27 @@ export function createUpgradeCheckStartupTask(upgradeService, priority) {
|
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Build the blocking {@link StartupTask} which offers to enable automatic upgrades and, when they
|
|
29
|
+
* are enabled, checks for and installs a newer version (see
|
|
30
|
+
* {@link UpgradeServiceProvider.runAutoUpgrade}). It is registered separately from the provider's
|
|
31
|
+
* own init task so it can run at a lower priority, after consumer startup tasks such as the banner.
|
|
32
|
+
*/
|
|
33
|
+
export function createAutoUpgradeStartupTask(provider, priority) {
|
|
34
|
+
return {
|
|
35
|
+
id: `${UPGRADE_SERVICE_ID}-auto-upgrade`,
|
|
36
|
+
priority,
|
|
37
|
+
mode: "blocking",
|
|
38
|
+
run: (context) => provider.runAutoUpgrade(context),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
27
41
|
export default class UpgradeServiceProvider {
|
|
28
42
|
serviceId = UPGRADE_SERVICE_ID;
|
|
29
43
|
servicePriority;
|
|
30
44
|
#config;
|
|
31
45
|
#upgradeService;
|
|
32
46
|
#cliConfig;
|
|
47
|
+
#keyValueService;
|
|
33
48
|
constructor(servicePriority, config) {
|
|
34
49
|
this.servicePriority = servicePriority;
|
|
35
50
|
this.#config = config;
|
|
@@ -45,9 +60,8 @@ export default class UpgradeServiceProvider {
|
|
|
45
60
|
commands: [new UpgradeSubCommand()],
|
|
46
61
|
});
|
|
47
62
|
}
|
|
48
|
-
|
|
63
|
+
initService(context) {
|
|
49
64
|
const upgradeService = this.#upgradeService;
|
|
50
|
-
const cliConfig = this.#cliConfig;
|
|
51
65
|
const spawnService = context.doesServiceExist(SPAWN_SERVICE_ID)
|
|
52
66
|
? context.getServiceById(SPAWN_SERVICE_ID)
|
|
53
67
|
: undefined;
|
|
@@ -60,10 +74,25 @@ export default class UpgradeServiceProvider {
|
|
|
60
74
|
if (fetchService === undefined) {
|
|
61
75
|
logger.debug(() => "FetchService not available, upgrade version checks will be unavailable");
|
|
62
76
|
}
|
|
63
|
-
|
|
77
|
+
// the KeyValueService from this context is bound to the upgrade service's own scope, so it is
|
|
78
|
+
// kept for runAutoUpgrade(), whose task context is scoped to the task ID instead
|
|
79
|
+
this.#keyValueService = context.doesServiceExist(KEY_VALUE_SERVICE_ID)
|
|
64
80
|
? context.getServiceById(KEY_VALUE_SERVICE_ID)
|
|
65
81
|
: undefined;
|
|
66
82
|
upgradeService.setContext(context);
|
|
83
|
+
return Promise.resolve();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Offer to enable automatic upgrades (storing the answer as `upgrade-status` in the upgrade
|
|
87
|
+
* service's scope) and, when they are enabled, check for and install a newer version. Must be
|
|
88
|
+
* called after {@link initService}.
|
|
89
|
+
*
|
|
90
|
+
* @param context the startup task's context, used to look up the Prompter and Printer services.
|
|
91
|
+
*/
|
|
92
|
+
async runAutoUpgrade(context) {
|
|
93
|
+
const upgradeService = this.#upgradeService;
|
|
94
|
+
const cliConfig = this.#cliConfig;
|
|
95
|
+
const keyValueService = this.#keyValueService;
|
|
67
96
|
if (!context.doesServiceExist(PROMPTER_SERVICE_ID)) {
|
|
68
97
|
logger.debug(() => "PrompterService not available, skipping auto-upgrade");
|
|
69
98
|
return;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { StartupTask } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
2
|
export declare const BANNER_STARTUP_TASK_ID = "@flowscripter/dynamic-cli-framework/banner-startup-task";
|
|
3
3
|
/**
|
|
4
|
-
* Build the ascii banner {@link StartupTask}
|
|
4
|
+
* Build the ascii banner {@link StartupTask}.
|
|
5
5
|
*
|
|
6
6
|
* A consumer opts in by passing the result of this function in the `serviceProviders` array
|
|
7
7
|
* argument of {@link launchMultiCommandCLI}/{@link launchSingleCommandCLI} (or via
|
|
8
|
-
* `BaseCLI.addStartupTask`)
|
|
9
|
-
* in that array - there's no default/automatic banner registration.
|
|
8
|
+
* `BaseCLI.addStartupTask`) - there's no default/automatic banner registration.
|
|
10
9
|
*
|
|
11
|
-
* @param priority the priority of the task (higher runs earlier
|
|
12
|
-
* `
|
|
10
|
+
* @param priority the priority of the task (higher runs earlier). It must be above
|
|
11
|
+
* `AUTO_UPGRADE_STARTUP_TASK_PRIORITY` (10) for the banner to print before the automatic upgrade
|
|
12
|
+
* prompt and upgrade.
|
|
13
13
|
* @param fontName an optional [FIGlet](http://www.figlet.org) font name to use for the banner,
|
|
14
14
|
* defaults to "standard".
|
|
15
15
|
*/
|
|
@@ -3,15 +3,15 @@ import DefaultUpgradeService from "../../service/upgrade/DefaultUpgradeService.j
|
|
|
3
3
|
import NoBannerCommand, {} from "./command/NoBannerCommand.js";
|
|
4
4
|
export const BANNER_STARTUP_TASK_ID = "@flowscripter/dynamic-cli-framework/banner-startup-task";
|
|
5
5
|
/**
|
|
6
|
-
* Build the ascii banner {@link StartupTask}
|
|
6
|
+
* Build the ascii banner {@link StartupTask}.
|
|
7
7
|
*
|
|
8
8
|
* A consumer opts in by passing the result of this function in the `serviceProviders` array
|
|
9
9
|
* argument of {@link launchMultiCommandCLI}/{@link launchSingleCommandCLI} (or via
|
|
10
|
-
* `BaseCLI.addStartupTask`)
|
|
11
|
-
* in that array - there's no default/automatic banner registration.
|
|
10
|
+
* `BaseCLI.addStartupTask`) - there's no default/automatic banner registration.
|
|
12
11
|
*
|
|
13
|
-
* @param priority the priority of the task (higher runs earlier
|
|
14
|
-
* `
|
|
12
|
+
* @param priority the priority of the task (higher runs earlier). It must be above
|
|
13
|
+
* `AUTO_UPGRADE_STARTUP_TASK_PRIORITY` (10) for the banner to print before the automatic upgrade
|
|
14
|
+
* prompt and upgrade.
|
|
15
15
|
* @param fontName an optional [FIGlet](http://www.figlet.org) font name to use for the banner,
|
|
16
16
|
* defaults to "standard".
|
|
17
17
|
*/
|
package/index.ts
CHANGED
|
@@ -207,6 +207,26 @@ export { default as PluginServiceProvider } from "./src/service/plugin/PluginSer
|
|
|
207
207
|
|
|
208
208
|
// Core CLI
|
|
209
209
|
export { default as BaseCLI } from "./src/cli/BaseCLI.ts";
|
|
210
|
+
export {
|
|
211
|
+
SHUTDOWN_SERVICE_PRIORITY,
|
|
212
|
+
STARTUP_SERVICE_PRIORITY,
|
|
213
|
+
CONFIGURATION_SERVICE_PRIORITY,
|
|
214
|
+
KEY_VALUE_SERVICE_PRIORITY,
|
|
215
|
+
PRINTER_SERVICE_PRIORITY,
|
|
216
|
+
PROMPTER_SERVICE_PRIORITY,
|
|
217
|
+
TABLE_GENERATOR_SERVICE_PRIORITY,
|
|
218
|
+
ARGUMENT_PROMPTER_SERVICE_PRIORITY,
|
|
219
|
+
SPAWN_SERVICE_PRIORITY,
|
|
220
|
+
FETCH_SERVICE_PRIORITY,
|
|
221
|
+
UPGRADE_SERVICE_PRIORITY,
|
|
222
|
+
UPGRADE_CHECK_STARTUP_TASK_PRIORITY,
|
|
223
|
+
IMAGE_PRINTER_SERVICE_PRIORITY,
|
|
224
|
+
PLUGIN_SERVICE_PRIORITY,
|
|
225
|
+
AUTO_UPGRADE_STARTUP_TASK_PRIORITY,
|
|
226
|
+
COMPLETION_SERVICE_PRIORITY,
|
|
227
|
+
CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
228
|
+
KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY,
|
|
229
|
+
} from "./src/runtime/lifecycle/priorities.ts";
|
|
210
230
|
export { default as DefaultRuntimeCLI } from "./src/cli/DefaultRuntimeCLI.ts";
|
|
211
231
|
|
|
212
232
|
// Terminal API
|
package/package.json
CHANGED
package/src/cli/BaseCLI.ts
CHANGED
|
@@ -57,9 +57,28 @@ import ImagePrinterServiceProvider from "../service/imagePrinter/ImagePrinterSer
|
|
|
57
57
|
import SpawnServiceProvider from "../service/spawn/SpawnServiceProvider.ts";
|
|
58
58
|
import FetchServiceProvider from "../service/fetch/FetchServiceProvider.ts";
|
|
59
59
|
import UpgradeServiceProvider, {
|
|
60
|
+
createAutoUpgradeStartupTask,
|
|
60
61
|
createUpgradeCheckStartupTask,
|
|
61
62
|
} from "../service/upgrade/UpgradeServiceProvider.ts";
|
|
62
63
|
import PluginServiceProvider from "../service/plugin/PluginServiceProvider.ts";
|
|
64
|
+
import {
|
|
65
|
+
ARGUMENT_PROMPTER_SERVICE_PRIORITY,
|
|
66
|
+
AUTO_UPGRADE_STARTUP_TASK_PRIORITY,
|
|
67
|
+
COMPLETION_SERVICE_PRIORITY,
|
|
68
|
+
CONFIGURATION_SERVICE_PRIORITY,
|
|
69
|
+
FETCH_SERVICE_PRIORITY,
|
|
70
|
+
IMAGE_PRINTER_SERVICE_PRIORITY,
|
|
71
|
+
KEY_VALUE_SERVICE_PRIORITY,
|
|
72
|
+
PLUGIN_SERVICE_PRIORITY,
|
|
73
|
+
PRINTER_SERVICE_PRIORITY,
|
|
74
|
+
PROMPTER_SERVICE_PRIORITY,
|
|
75
|
+
SHUTDOWN_SERVICE_PRIORITY,
|
|
76
|
+
SPAWN_SERVICE_PRIORITY,
|
|
77
|
+
STARTUP_SERVICE_PRIORITY,
|
|
78
|
+
TABLE_GENERATOR_SERVICE_PRIORITY,
|
|
79
|
+
UPGRADE_CHECK_STARTUP_TASK_PRIORITY,
|
|
80
|
+
UPGRADE_SERVICE_PRIORITY,
|
|
81
|
+
} from "../runtime/lifecycle/priorities.ts";
|
|
63
82
|
const logger = getLogger("BaseCLI");
|
|
64
83
|
|
|
65
84
|
/**
|
|
@@ -177,9 +196,7 @@ export default class BaseCLI implements CLI {
|
|
|
177
196
|
// create a context
|
|
178
197
|
this.#context = new DefaultContext(this.#cliConfig);
|
|
179
198
|
|
|
180
|
-
|
|
181
|
-
// dependency on anything since its own initService() is a no-op.
|
|
182
|
-
this.#startupServiceProvider = new StartupServiceProvider(95);
|
|
199
|
+
this.#startupServiceProvider = new StartupServiceProvider(STARTUP_SERVICE_PRIORITY);
|
|
183
200
|
|
|
184
201
|
this.#stdoutTerminal = stdoutTerminal;
|
|
185
202
|
this.#printerService = new DefaultPrinterService(
|
|
@@ -251,10 +268,12 @@ export default class BaseCLI implements CLI {
|
|
|
251
268
|
}
|
|
252
269
|
|
|
253
270
|
// create and add core services
|
|
254
|
-
this.addServiceProvider(new ShutdownServiceProvider(
|
|
271
|
+
this.addServiceProvider(new ShutdownServiceProvider(SHUTDOWN_SERVICE_PRIORITY));
|
|
255
272
|
this.addServiceProvider(this.#startupServiceProvider);
|
|
256
|
-
this.addServiceProvider(
|
|
257
|
-
|
|
273
|
+
this.addServiceProvider(
|
|
274
|
+
new PrinterServiceProvider(PRINTER_SERVICE_PRIORITY, this.#printerService),
|
|
275
|
+
);
|
|
276
|
+
this.addServiceProvider(new TableGeneratorServiceProvider(TABLE_GENERATOR_SERVICE_PRIORITY));
|
|
258
277
|
|
|
259
278
|
const canPrompt = this.#keyReader !== undefined && this.#stderrTerminal.isTty();
|
|
260
279
|
|
|
@@ -271,7 +290,9 @@ export default class BaseCLI implements CLI {
|
|
|
271
290
|
this.#printerService,
|
|
272
291
|
);
|
|
273
292
|
prompterService.promptEnabled = this.#options.promptingEnabled;
|
|
274
|
-
this.addServiceProvider(
|
|
293
|
+
this.addServiceProvider(
|
|
294
|
+
new PrompterServiceProvider(PROMPTER_SERVICE_PRIORITY, prompterService),
|
|
295
|
+
);
|
|
275
296
|
} else {
|
|
276
297
|
logger.debug(
|
|
277
298
|
() =>
|
|
@@ -284,7 +305,12 @@ export default class BaseCLI implements CLI {
|
|
|
284
305
|
if (this.#options.argumentPrompterServiceEnabled) {
|
|
285
306
|
if (prompterService !== undefined) {
|
|
286
307
|
const argumentPrompterService = new DefaultArgumentPrompterService(prompterService);
|
|
287
|
-
this.addServiceProvider(
|
|
308
|
+
this.addServiceProvider(
|
|
309
|
+
new ArgumentPrompterServiceProvider(
|
|
310
|
+
ARGUMENT_PROMPTER_SERVICE_PRIORITY,
|
|
311
|
+
argumentPrompterService,
|
|
312
|
+
),
|
|
313
|
+
);
|
|
288
314
|
} else {
|
|
289
315
|
logger.debug(
|
|
290
316
|
"Skipping ArgumentPrompterServiceProvider: argumentPrompterServiceEnabled is true but prompting is unavailable",
|
|
@@ -294,7 +320,9 @@ export default class BaseCLI implements CLI {
|
|
|
294
320
|
|
|
295
321
|
if (this.#options.imagePrinterServiceEnabled) {
|
|
296
322
|
if (this.#stdoutTerminal.isTty()) {
|
|
297
|
-
this.addServiceProvider(
|
|
323
|
+
this.addServiceProvider(
|
|
324
|
+
new ImagePrinterServiceProvider(IMAGE_PRINTER_SERVICE_PRIORITY, this.#stdoutTerminal),
|
|
325
|
+
);
|
|
298
326
|
} else {
|
|
299
327
|
logger.debug(
|
|
300
328
|
"Skipping ImagePrinterServiceProvider: imagePrinterServiceEnabled is true but stdout is not a TTY",
|
|
@@ -305,32 +333,37 @@ export default class BaseCLI implements CLI {
|
|
|
305
333
|
// The plugin service routes package manager output through SpawnService so that it is
|
|
306
334
|
// quoted, marked and cleared on success; enabling plugins therefore also enables spawning.
|
|
307
335
|
if (this.#options.spawnServiceEnabled || this.#options.pluginServiceEnabled) {
|
|
308
|
-
this.addServiceProvider(new SpawnServiceProvider(
|
|
336
|
+
this.addServiceProvider(new SpawnServiceProvider(SPAWN_SERVICE_PRIORITY));
|
|
309
337
|
}
|
|
310
338
|
|
|
311
339
|
if (this.#options.fetchServiceEnabled) {
|
|
312
|
-
this.addServiceProvider(new FetchServiceProvider(
|
|
340
|
+
this.addServiceProvider(new FetchServiceProvider(FETCH_SERVICE_PRIORITY));
|
|
313
341
|
}
|
|
314
342
|
|
|
315
343
|
if (this.#options.completionServiceEnabled) {
|
|
316
344
|
const completionService = new DefaultCompletionService();
|
|
317
345
|
this.addServiceProvider(
|
|
318
|
-
new CompletionServiceProvider(
|
|
346
|
+
new CompletionServiceProvider(
|
|
347
|
+
COMPLETION_SERVICE_PRIORITY,
|
|
348
|
+
completionService,
|
|
349
|
+
this.#commandRegistry,
|
|
350
|
+
),
|
|
319
351
|
);
|
|
320
352
|
}
|
|
321
353
|
|
|
322
354
|
let upgradeServiceProvider: UpgradeServiceProvider | undefined;
|
|
323
355
|
if (this.#options.upgradeServiceEnabled) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
356
|
+
upgradeServiceProvider = new UpgradeServiceProvider(
|
|
357
|
+
UPGRADE_SERVICE_PRIORITY,
|
|
358
|
+
this.#options.upgradeLocationsConfig,
|
|
359
|
+
);
|
|
327
360
|
this.addServiceProvider(upgradeServiceProvider);
|
|
328
361
|
}
|
|
329
362
|
|
|
330
363
|
if (this.#options.pluginServiceEnabled) {
|
|
331
364
|
this.addServiceProvider(
|
|
332
365
|
new PluginServiceProvider(
|
|
333
|
-
|
|
366
|
+
PLUGIN_SERVICE_PRIORITY,
|
|
334
367
|
this.#options.pluginServiceRemoteConfig,
|
|
335
368
|
this.#options.pluginServiceLocalConfig,
|
|
336
369
|
this.#commandRegistry,
|
|
@@ -340,16 +373,14 @@ export default class BaseCLI implements CLI {
|
|
|
340
373
|
}
|
|
341
374
|
|
|
342
375
|
const configurationServiceProvider = new ConfigurationServiceProvider(
|
|
343
|
-
|
|
376
|
+
CONFIGURATION_SERVICE_PRIORITY,
|
|
344
377
|
this.#options.envVarsSupportEnabled,
|
|
345
378
|
this.#options.configFileSupportEnabled,
|
|
346
379
|
this.#options.secretServiceEnabled,
|
|
347
380
|
);
|
|
348
381
|
this.addServiceProvider(configurationServiceProvider);
|
|
349
|
-
// priority 89 sits just below ConfigurationServiceProvider's 90 - its config-file read
|
|
350
|
-
// happens in its own initService(), before KeyValueServiceProvider's initService() runs.
|
|
351
382
|
const keyValueServiceProvider = new KeyValueServiceProvider(
|
|
352
|
-
|
|
383
|
+
KEY_VALUE_SERVICE_PRIORITY,
|
|
353
384
|
configurationServiceProvider,
|
|
354
385
|
this.#options.keyValueServiceEnabled,
|
|
355
386
|
this.#options.secretServiceEnabled,
|
|
@@ -369,7 +400,15 @@ export default class BaseCLI implements CLI {
|
|
|
369
400
|
}
|
|
370
401
|
|
|
371
402
|
if (upgradeServiceProvider?.upgradeService) {
|
|
372
|
-
this.addStartupTask(
|
|
403
|
+
this.addStartupTask(
|
|
404
|
+
createUpgradeCheckStartupTask(
|
|
405
|
+
upgradeServiceProvider.upgradeService,
|
|
406
|
+
UPGRADE_CHECK_STARTUP_TASK_PRIORITY,
|
|
407
|
+
),
|
|
408
|
+
);
|
|
409
|
+
this.addStartupTask(
|
|
410
|
+
createAutoUpgradeStartupTask(upgradeServiceProvider, AUTO_UPGRADE_STARTUP_TASK_PRIORITY),
|
|
411
|
+
);
|
|
373
412
|
}
|
|
374
413
|
|
|
375
414
|
// directly-registered StartupTasks (e.g. the banner task) aren't backed by a ServiceProvider,
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priorities of the framework's built-in service providers, startup tasks and shutdown tasks.
|
|
3
|
+
* Higher values run earlier (see {@link sortByPriority}). Service provider priorities also order
|
|
4
|
+
* their `initService()` calls within the startup sequence: when a provider and a directly
|
|
5
|
+
* registered startup task share a priority, the provider runs first.
|
|
6
|
+
*
|
|
7
|
+
* Consumer service providers and startup tasks (e.g. the banner task) choose their own
|
|
8
|
+
* priorities relative to these.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Shutdown service provider: first, so signal handling is in place before anything else. */
|
|
12
|
+
export const SHUTDOWN_SERVICE_PRIORITY = 100;
|
|
13
|
+
|
|
14
|
+
/** Startup service provider: no ordering dependency, as its `initService()` is a no-op. */
|
|
15
|
+
export const STARTUP_SERVICE_PRIORITY = 95;
|
|
16
|
+
|
|
17
|
+
/** Configuration service provider: reads the config file in its `initService()`. */
|
|
18
|
+
export const CONFIGURATION_SERVICE_PRIORITY = 90;
|
|
19
|
+
|
|
20
|
+
/** Key-value service provider: just below configuration, whose config-file read it depends on. */
|
|
21
|
+
export const KEY_VALUE_SERVICE_PRIORITY = 89;
|
|
22
|
+
|
|
23
|
+
/** Printer service provider. */
|
|
24
|
+
export const PRINTER_SERVICE_PRIORITY = 80;
|
|
25
|
+
|
|
26
|
+
/** Prompter service provider. */
|
|
27
|
+
export const PROMPTER_SERVICE_PRIORITY = 75;
|
|
28
|
+
|
|
29
|
+
/** Table generator service provider. */
|
|
30
|
+
export const TABLE_GENERATOR_SERVICE_PRIORITY = 70;
|
|
31
|
+
|
|
32
|
+
/** Argument prompter service provider: below the prompter it uses. */
|
|
33
|
+
export const ARGUMENT_PROMPTER_SERVICE_PRIORITY = 65;
|
|
34
|
+
|
|
35
|
+
/** Spawn service provider. */
|
|
36
|
+
export const SPAWN_SERVICE_PRIORITY = 58;
|
|
37
|
+
|
|
38
|
+
/** Fetch service provider. */
|
|
39
|
+
export const FETCH_SERVICE_PRIORITY = 57;
|
|
40
|
+
|
|
41
|
+
/** Upgrade service provider: below the spawn and fetch services it uses. */
|
|
42
|
+
export const UPGRADE_SERVICE_PRIORITY = 56;
|
|
43
|
+
|
|
44
|
+
/** Background startup task which refreshes the cached upgrade check result. */
|
|
45
|
+
export const UPGRADE_CHECK_STARTUP_TASK_PRIORITY = 56;
|
|
46
|
+
|
|
47
|
+
/** Image printer service provider. */
|
|
48
|
+
export const IMAGE_PRINTER_SERVICE_PRIORITY = 55;
|
|
49
|
+
|
|
50
|
+
/** Plugin service provider. */
|
|
51
|
+
export const PLUGIN_SERVICE_PRIORITY = 50;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Startup task which prompts to enable automatic upgrades and performs them. It runs below
|
|
55
|
+
* consumer startup tasks such as the banner (typically 45 or more) and above the completion
|
|
56
|
+
* prompt.
|
|
57
|
+
*/
|
|
58
|
+
export const AUTO_UPGRADE_STARTUP_TASK_PRIORITY = 10;
|
|
59
|
+
|
|
60
|
+
/** Completion service provider, whose `initService()` prompts to enable shell completion. */
|
|
61
|
+
export const COMPLETION_SERVICE_PRIORITY = 5;
|
|
62
|
+
|
|
63
|
+
/** Shutdown tasks which clean up in-flight work (spinners, progress bars, spawns, fetches). */
|
|
64
|
+
export const CLEANUP_SHUTDOWN_TASK_PRIORITY = 0;
|
|
65
|
+
|
|
66
|
+
/** Shutdown task which flushes key-value data to the config file, after all other cleanup. */
|
|
67
|
+
export const KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY = -100;
|
|
@@ -12,6 +12,7 @@ import DefaultSecretService from "./DefaultSecretService.ts";
|
|
|
12
12
|
import type ConfigurationServiceProvider from "./ConfigurationServiceProvider.ts";
|
|
13
13
|
import type { KeyValueServiceScopeType } from "./ConfigurationServiceProvider.ts";
|
|
14
14
|
import type DefaultContext from "../../runtime/DefaultContext.ts";
|
|
15
|
+
import { KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.ts";
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Registered under {@link KEY_VALUE_SERVICE_ID} in the plain, undecorated {@link Context} purely
|
|
@@ -245,9 +246,7 @@ export default class KeyValueServiceProvider implements ServiceProvider {
|
|
|
245
246
|
const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID) as ShutdownService;
|
|
246
247
|
shutdownService.registerTask({
|
|
247
248
|
id: `${KEY_VALUE_SERVICE_ID}-flush`,
|
|
248
|
-
|
|
249
|
-
// other shutdown cleanup (which defaults to priority 0).
|
|
250
|
-
priority: -100,
|
|
249
|
+
priority: KEY_VALUE_FLUSH_SHUTDOWN_TASK_PRIORITY,
|
|
251
250
|
run: () => this.#flushDirtyScopes(),
|
|
252
251
|
});
|
|
253
252
|
}
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
} from "@flowscripter/dynamic-cli-framework-api";
|
|
7
7
|
import { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
8
8
|
import getLogger from "../../util/logger.ts";
|
|
9
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.ts";
|
|
9
10
|
|
|
10
11
|
const logger = getLogger("DefaultFetchService");
|
|
11
12
|
|
|
@@ -38,7 +39,7 @@ export default class DefaultFetchService implements FetchService {
|
|
|
38
39
|
shutdownService.enterLongRunningMode();
|
|
39
40
|
shutdownService.registerTask({
|
|
40
41
|
id: `fetch:${input.toString()}`,
|
|
41
|
-
priority:
|
|
42
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
42
43
|
run: async () => {
|
|
43
44
|
if (settled) {
|
|
44
45
|
return;
|
|
@@ -9,6 +9,7 @@ import NoHyperlinksCommand from "./command/NoHyperlinksCommand.ts";
|
|
|
9
9
|
import type { CLIConfig } from "@flowscripter/dynamic-cli-framework-api";
|
|
10
10
|
import type { ShutdownService } from "@flowscripter/dynamic-cli-framework-api";
|
|
11
11
|
import { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
12
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.ts";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Provides a {@link PrinterService}.
|
|
@@ -45,7 +46,7 @@ export default class PrinterServiceProvider implements ServiceProvider {
|
|
|
45
46
|
const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID) as ShutdownService;
|
|
46
47
|
shutdownService.registerTask({
|
|
47
48
|
id: PRINTER_SERVICE_ID,
|
|
48
|
-
priority:
|
|
49
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
49
50
|
run: async () => {
|
|
50
51
|
await this.printerService.hideSpinner();
|
|
51
52
|
await this.printerService.hideAllProgressBars();
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
} from "@flowscripter/dynamic-cli-framework-api";
|
|
10
10
|
import { PRINTER_SERVICE_ID, SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
|
|
11
11
|
import getLogger from "../../util/logger.ts";
|
|
12
|
+
import { CLEANUP_SHUTDOWN_TASK_PRIORITY } from "../../runtime/lifecycle/priorities.ts";
|
|
12
13
|
|
|
13
14
|
const logger = getLogger("DefaultSpawnService");
|
|
14
15
|
|
|
@@ -124,7 +125,7 @@ export default class DefaultSpawnService implements SpawnService {
|
|
|
124
125
|
|
|
125
126
|
shutdownService.registerTask({
|
|
126
127
|
id: `spawn:${command.join(" ")}`,
|
|
127
|
-
priority:
|
|
128
|
+
priority: CLEANUP_SHUTDOWN_TASK_PRIORITY,
|
|
128
129
|
run: async () => {
|
|
129
130
|
if (settled) {
|
|
130
131
|
return;
|
|
@@ -40,12 +40,31 @@ export function createUpgradeCheckStartupTask(
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Build the blocking {@link StartupTask} which offers to enable automatic upgrades and, when they
|
|
45
|
+
* are enabled, checks for and installs a newer version (see
|
|
46
|
+
* {@link UpgradeServiceProvider.runAutoUpgrade}). It is registered separately from the provider's
|
|
47
|
+
* own init task so it can run at a lower priority, after consumer startup tasks such as the banner.
|
|
48
|
+
*/
|
|
49
|
+
export function createAutoUpgradeStartupTask(
|
|
50
|
+
provider: UpgradeServiceProvider,
|
|
51
|
+
priority: number,
|
|
52
|
+
): StartupTask {
|
|
53
|
+
return {
|
|
54
|
+
id: `${UPGRADE_SERVICE_ID}-auto-upgrade`,
|
|
55
|
+
priority,
|
|
56
|
+
mode: "blocking",
|
|
57
|
+
run: (context: Context) => provider.runAutoUpgrade(context),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
43
61
|
export default class UpgradeServiceProvider implements ServiceProvider {
|
|
44
62
|
readonly serviceId: string = UPGRADE_SERVICE_ID;
|
|
45
63
|
readonly servicePriority: number;
|
|
46
64
|
readonly #config: UpgradeLocationsConfig;
|
|
47
65
|
#upgradeService: DefaultUpgradeService | undefined;
|
|
48
66
|
#cliConfig: CLIConfig | undefined;
|
|
67
|
+
#keyValueService: KeyValueService | undefined;
|
|
49
68
|
|
|
50
69
|
public constructor(servicePriority: number, config: UpgradeLocationsConfig) {
|
|
51
70
|
this.servicePriority = servicePriority;
|
|
@@ -65,9 +84,8 @@ export default class UpgradeServiceProvider implements ServiceProvider {
|
|
|
65
84
|
});
|
|
66
85
|
}
|
|
67
86
|
|
|
68
|
-
public
|
|
87
|
+
public initService(context: Context): Promise<void> {
|
|
69
88
|
const upgradeService = this.#upgradeService!;
|
|
70
|
-
const cliConfig = this.#cliConfig!;
|
|
71
89
|
|
|
72
90
|
const spawnService = context.doesServiceExist(SPAWN_SERVICE_ID)
|
|
73
91
|
? (context.getServiceById(SPAWN_SERVICE_ID) as SpawnService)
|
|
@@ -81,10 +99,26 @@ export default class UpgradeServiceProvider implements ServiceProvider {
|
|
|
81
99
|
if (fetchService === undefined) {
|
|
82
100
|
logger.debug(() => "FetchService not available, upgrade version checks will be unavailable");
|
|
83
101
|
}
|
|
84
|
-
|
|
102
|
+
// the KeyValueService from this context is bound to the upgrade service's own scope, so it is
|
|
103
|
+
// kept for runAutoUpgrade(), whose task context is scoped to the task ID instead
|
|
104
|
+
this.#keyValueService = context.doesServiceExist(KEY_VALUE_SERVICE_ID)
|
|
85
105
|
? (context.getServiceById(KEY_VALUE_SERVICE_ID) as KeyValueService)
|
|
86
106
|
: undefined;
|
|
87
107
|
upgradeService.setContext(context);
|
|
108
|
+
return Promise.resolve();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Offer to enable automatic upgrades (storing the answer as `upgrade-status` in the upgrade
|
|
113
|
+
* service's scope) and, when they are enabled, check for and install a newer version. Must be
|
|
114
|
+
* called after {@link initService}.
|
|
115
|
+
*
|
|
116
|
+
* @param context the startup task's context, used to look up the Prompter and Printer services.
|
|
117
|
+
*/
|
|
118
|
+
public async runAutoUpgrade(context: Context): Promise<void> {
|
|
119
|
+
const upgradeService = this.#upgradeService!;
|
|
120
|
+
const cliConfig = this.#cliConfig!;
|
|
121
|
+
const keyValueService = this.#keyValueService;
|
|
88
122
|
|
|
89
123
|
if (!context.doesServiceExist(PROMPTER_SERVICE_ID)) {
|
|
90
124
|
logger.debug(() => "PrompterService not available, skipping auto-upgrade");
|
|
@@ -13,15 +13,15 @@ import NoBannerCommand, { type BannerState } from "./command/NoBannerCommand.ts"
|
|
|
13
13
|
export const BANNER_STARTUP_TASK_ID = "@flowscripter/dynamic-cli-framework/banner-startup-task";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* Build the ascii banner {@link StartupTask}
|
|
16
|
+
* Build the ascii banner {@link StartupTask}.
|
|
17
17
|
*
|
|
18
18
|
* A consumer opts in by passing the result of this function in the `serviceProviders` array
|
|
19
19
|
* argument of {@link launchMultiCommandCLI}/{@link launchSingleCommandCLI} (or via
|
|
20
|
-
* `BaseCLI.addStartupTask`)
|
|
21
|
-
* in that array - there's no default/automatic banner registration.
|
|
20
|
+
* `BaseCLI.addStartupTask`) - there's no default/automatic banner registration.
|
|
22
21
|
*
|
|
23
|
-
* @param priority the priority of the task (higher runs earlier
|
|
24
|
-
* `
|
|
22
|
+
* @param priority the priority of the task (higher runs earlier). It must be above
|
|
23
|
+
* `AUTO_UPGRADE_STARTUP_TASK_PRIORITY` (10) for the banner to print before the automatic upgrade
|
|
24
|
+
* prompt and upgrade.
|
|
25
25
|
* @param fontName an optional [FIGlet](http://www.figlet.org) font name to use for the banner,
|
|
26
26
|
* defaults to "standard".
|
|
27
27
|
*/
|