@flowscripter/dynamic-cli-framework 1.7.2 → 1.7.3
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.js +67 -23
- package/dist/src/api/command/Command.d.ts +5 -0
- package/dist/src/api/command/Command.d.ts.map +1 -1
- package/dist/src/cli/BaseCLI.d.ts.map +1 -1
- package/dist/src/cli/DefaultRuntimeCLI.d.ts.map +1 -1
- package/dist/src/command/CompletionCommand.d.ts +1 -0
- package/dist/src/command/CompletionCommand.d.ts.map +1 -1
- package/dist/src/command/MultiCommandCliHelpCommand.d.ts.map +1 -1
- package/dist/src/service/completion/DefaultCompletionService.d.ts.map +1 -1
- package/dist/src/terminal/supportsHyperlinks.d.ts.map +1 -1
- package/dist/src/util/helpHelper.d.ts.map +1 -1
- package/dist/src/util/runnerHelper.d.ts +1 -0
- package/dist/src/util/runnerHelper.d.ts.map +1 -1
- package/dist/tests/command/PluginCommand.test.d.ts +2 -0
- package/dist/tests/command/PluginCommand.test.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/api/command/Command.ts +6 -0
- package/src/cli/BaseCLI.ts +2 -0
- package/src/cli/DefaultRuntimeCLI.ts +0 -4
- package/src/command/CompletionCommand.ts +1 -0
- package/src/command/MultiCommandCliHelpCommand.ts +23 -7
- package/src/command/PluginCommand.ts +5 -5
- package/src/service/completion/DefaultCompletionService.ts +14 -0
- package/src/service/completion/shell/bash.ts +1 -1
- package/src/service/completion/shell/fish.ts +1 -1
- package/src/service/completion/shell/powershell.ts +1 -1
- package/src/service/completion/shell/zsh.ts +1 -1
- package/src/service/tableGenerator/DefaultTableGeneratorService.ts +1 -1
- package/src/terminal/supportsHyperlinks.ts +22 -0
- package/src/util/helpHelper.ts +6 -4
- package/src/util/runnerHelper.ts +14 -2
package/dist/index.js
CHANGED
|
@@ -100323,7 +100323,7 @@ class DefaultTableGeneratorService {
|
|
|
100323
100323
|
}
|
|
100324
100324
|
if (border)
|
|
100325
100325
|
line3 += this.#colorBorder(BORDER_RIGHT, table);
|
|
100326
|
-
output.push(line3);
|
|
100326
|
+
output.push(border ? line3 : line3.trimEnd());
|
|
100327
100327
|
}
|
|
100328
100328
|
if (border && row < table.rowCount - 1) {
|
|
100329
100329
|
output.push(this.#renderHorizontalBorder(table, columnWidths, padding, BORDER_LEFT_MIDDLE, BORDER_MIDDLE, BORDER_MIDDLE_MIDDLE, BORDER_RIGHT_MIDDLE));
|
|
@@ -100477,7 +100477,7 @@ class BashShellHandler {
|
|
|
100477
100477
|
return [
|
|
100478
100478
|
`_${cliName}_completions() {`,
|
|
100479
100479
|
` local IFS=$'\\n'`,
|
|
100480
|
-
` COMPREPLY=( $("${executablePath}" completions:complete bash "\${COMP_LINE}" "\${COMP_POINT}") )`,
|
|
100480
|
+
` COMPREPLY=( $("${executablePath}" completions:complete bash "\${COMP_LINE}" "\${COMP_POINT}" 2>/dev/null) )`,
|
|
100481
100481
|
`}`,
|
|
100482
100482
|
`complete -F _${cliName}_completions ${cliName}`
|
|
100483
100483
|
].join(`
|
|
@@ -100519,7 +100519,7 @@ class ZshShellHandler {
|
|
|
100519
100519
|
return [
|
|
100520
100520
|
`_${cliName}_completions() {`,
|
|
100521
100521
|
` local -a completions`,
|
|
100522
|
-
` completions=("\${(@f)$("${executablePath}" completions:complete zsh "\${words}" "\${CURSOR}")}")`,
|
|
100522
|
+
` completions=("\${(@f)$("${executablePath}" completions:complete zsh "\${words}" "\${CURSOR}" 2>/dev/null)}")`,
|
|
100523
100523
|
` _describe '${cliName}' completions`,
|
|
100524
100524
|
`}`,
|
|
100525
100525
|
`compdef _${cliName}_completions ${cliName}`
|
|
@@ -100559,7 +100559,7 @@ class FishShellHandler {
|
|
|
100559
100559
|
return join7(homedir3(), ".config", "fish", "config.fish");
|
|
100560
100560
|
}
|
|
100561
100561
|
getBootstrapScript(cliName, executablePath) {
|
|
100562
|
-
return `complete -c ${cliName} -f -a '("${executablePath}" completions:complete fish (commandline -cp) (commandline -C))'`;
|
|
100562
|
+
return `complete -c ${cliName} -f -a '("${executablePath}" completions:complete fish (commandline -cp) (commandline -C) 2>/dev/null)'`;
|
|
100563
100563
|
}
|
|
100564
100564
|
validateEnvironment() {
|
|
100565
100565
|
const shell = process11.env.SHELL || "";
|
|
@@ -100600,7 +100600,7 @@ class PowerShellShellHandler {
|
|
|
100600
100600
|
return [
|
|
100601
100601
|
`Register-ArgumentCompleter -Native -CommandName ${cliName} -ScriptBlock {`,
|
|
100602
100602
|
` param($wordToComplete, $commandAst, $cursorPosition)`,
|
|
100603
|
-
` $completions = & "${executablePath}" completions:complete powershell "$commandAst" "$cursorPosition"`,
|
|
100603
|
+
` $completions = & "${executablePath}" completions:complete powershell "$commandAst" "$cursorPosition" 2>$null`,
|
|
100604
100604
|
` $completions -split '\\n' | ForEach-Object {`,
|
|
100605
100605
|
` [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)`,
|
|
100606
100606
|
` }`,
|
|
@@ -100703,6 +100703,16 @@ class DefaultCompletionService {
|
|
|
100703
100703
|
}));
|
|
100704
100704
|
}
|
|
100705
100705
|
}
|
|
100706
|
+
if (commandWord.startsWith("--")) {
|
|
100707
|
+
const globalCommandName = commandWord.substring(2);
|
|
100708
|
+
const globalCommand = this.#commandRegistry.getGlobalCommandByName(globalCommandName);
|
|
100709
|
+
if (globalCommand) {
|
|
100710
|
+
if (globalCommand.argument?.allowableValues) {
|
|
100711
|
+
return globalCommand.argument.allowableValues.filter((v7) => String(v7).startsWith(currentWord)).map((v7) => ({ value: String(v7) }));
|
|
100712
|
+
}
|
|
100713
|
+
return [];
|
|
100714
|
+
}
|
|
100715
|
+
}
|
|
100706
100716
|
const subCommand = this.#commandRegistry.getSubCommandByName(commandWord);
|
|
100707
100717
|
if (subCommand) {
|
|
100708
100718
|
return this.#completeSubCommandArgs(subCommand, intermediateWords, currentWord);
|
|
@@ -102283,7 +102293,7 @@ function findPossibleCommandNames(commandName, groupCommands, subCommands) {
|
|
|
102283
102293
|
levenCommandArray.push([distance(subCommand.name, commandName), subCommand.name]);
|
|
102284
102294
|
});
|
|
102285
102295
|
groupCommands.forEach((groupCommand) => {
|
|
102286
|
-
groupCommand.memberSubCommands.forEach((memberCommand) => {
|
|
102296
|
+
groupCommand.memberSubCommands.filter((memberCommand) => !memberCommand.disableGenericHelpDisplay).forEach((memberCommand) => {
|
|
102287
102297
|
const memberName = `${groupCommand.name}:${memberCommand.name}`;
|
|
102288
102298
|
levenCommandArray.push([distance(memberName, commandName), memberName]);
|
|
102289
102299
|
});
|
|
@@ -102427,11 +102437,14 @@ class MultiCommandCliAbstractHelpCommand {
|
|
|
102427
102437
|
helpSections.push(this.#getGlobalCommandsHelpSection(context, `${globalPrefix}Commands`, globalCommands));
|
|
102428
102438
|
}
|
|
102429
102439
|
groupCommands.forEach((groupCommand) => {
|
|
102440
|
+
const visibleMemberSubCommands = groupCommand.memberSubCommands.filter((memberCommand) => !memberCommand.disableGenericHelpDisplay);
|
|
102441
|
+
if (visibleMemberSubCommands.length === 0)
|
|
102442
|
+
return;
|
|
102430
102443
|
const topicSection = {
|
|
102431
102444
|
title: `${groupCommand.name.charAt(0).toUpperCase() + groupCommand.name.slice(1)} Commands`,
|
|
102432
102445
|
helpEntries: []
|
|
102433
102446
|
};
|
|
102434
|
-
|
|
102447
|
+
visibleMemberSubCommands.forEach((memberCommand) => {
|
|
102435
102448
|
topicSection.helpEntries.push({
|
|
102436
102449
|
syntax: `${groupCommand.name}:${memberCommand.name}`,
|
|
102437
102450
|
description: memberCommand.description
|
|
@@ -102489,10 +102502,10 @@ class MultiCommandCliAbstractHelpCommand {
|
|
|
102489
102502
|
async printGenericHelp(context) {
|
|
102490
102503
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
102491
102504
|
const tableGeneratorService = context.getServiceById(TABLE_GENERATOR_SERVICE_ID);
|
|
102492
|
-
const globalModifierCommands = this.#commandRegistry.getGlobalModifierCommands();
|
|
102493
|
-
const globalCommands = this.#commandRegistry.getGlobalCommands();
|
|
102494
|
-
const groupCommands = this.#commandRegistry.getGroupCommands();
|
|
102495
|
-
const subCommands = this.#commandRegistry.getSubCommands();
|
|
102505
|
+
const globalModifierCommands = this.#commandRegistry.getGlobalModifierCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102506
|
+
const globalCommands = this.#commandRegistry.getGlobalCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102507
|
+
const groupCommands = this.#commandRegistry.getGroupCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102508
|
+
const subCommands = this.#commandRegistry.getSubCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102496
102509
|
const helpSections = [];
|
|
102497
102510
|
helpSections.push({
|
|
102498
102511
|
title: "Usage",
|
|
@@ -102508,8 +102521,8 @@ class MultiCommandCliAbstractHelpCommand {
|
|
|
102508
102521
|
async printUsageHelp(context, commandName) {
|
|
102509
102522
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
102510
102523
|
const tableGeneratorService = context.getServiceById(TABLE_GENERATOR_SERVICE_ID);
|
|
102511
|
-
const groupCommands = this.#commandRegistry.getGroupCommands();
|
|
102512
|
-
const subCommands = this.#commandRegistry.getSubCommands();
|
|
102524
|
+
const groupCommands = this.#commandRegistry.getGroupCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102525
|
+
const subCommands = this.#commandRegistry.getSubCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
102513
102526
|
let subCommand = this.#commandRegistry.getSubCommandByName(commandName);
|
|
102514
102527
|
let groupCommand;
|
|
102515
102528
|
if (subCommand === undefined) {
|
|
@@ -102705,7 +102718,8 @@ class PluginAddSubCommand {
|
|
|
102705
102718
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
102706
102719
|
const pluginService = context.getServiceById(PLUGIN_SERVICE_ID);
|
|
102707
102720
|
const pluginId = argumentValues["pluginId"];
|
|
102708
|
-
await printerService.info(`Searching for plugin: ${pluginId}
|
|
102721
|
+
await printerService.info(`Searching for plugin: ${pluginId}
|
|
102722
|
+
`, 3 /* INFORMATION */);
|
|
102709
102723
|
let descriptor;
|
|
102710
102724
|
for await (const d5 of pluginService.search({ text: pluginId })) {
|
|
102711
102725
|
if (getPluginId(d5) === pluginId || d5.pluginId === pluginId) {
|
|
@@ -102714,7 +102728,8 @@ class PluginAddSubCommand {
|
|
|
102714
102728
|
}
|
|
102715
102729
|
}
|
|
102716
102730
|
if (!descriptor) {
|
|
102717
|
-
await printerService.info(`Plugin not found via search, attempting direct install of ${pluginId}
|
|
102731
|
+
await printerService.info(`Plugin not found via search, attempting direct install of ${pluginId}...
|
|
102732
|
+
`, 3 /* INFORMATION */);
|
|
102718
102733
|
const parts = pluginId.startsWith("@") ? pluginId.slice(1).split("/") : [undefined, pluginId];
|
|
102719
102734
|
const scope = pluginId.startsWith("@") ? `@${parts[0]}` : undefined;
|
|
102720
102735
|
const name = pluginId.startsWith("@") ? parts[1] : pluginId;
|
|
@@ -102726,7 +102741,8 @@ class PluginAddSubCommand {
|
|
|
102726
102741
|
extensionPoints: []
|
|
102727
102742
|
};
|
|
102728
102743
|
}
|
|
102729
|
-
await printerService.info(`Installing ${descriptor.pluginId}
|
|
102744
|
+
await printerService.info(`Installing ${descriptor.pluginId}...
|
|
102745
|
+
`, 3 /* INFORMATION */);
|
|
102730
102746
|
await pluginService.install(descriptor);
|
|
102731
102747
|
await printerService.print(`Plugin ${descriptor.pluginId} installed.
|
|
102732
102748
|
`, 0 /* SUCCESS */);
|
|
@@ -102749,7 +102765,8 @@ class PluginRemoveSubCommand {
|
|
|
102749
102765
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
102750
102766
|
const pluginService = context.getServiceById(PLUGIN_SERVICE_ID);
|
|
102751
102767
|
const pluginId = argumentValues["pluginId"];
|
|
102752
|
-
await printerService.info(`Removing plugin: ${pluginId}
|
|
102768
|
+
await printerService.info(`Removing plugin: ${pluginId}...
|
|
102769
|
+
`, 3 /* INFORMATION */);
|
|
102753
102770
|
await pluginService.uninstall(pluginId);
|
|
102754
102771
|
await printerService.print(`Plugin ${pluginId} removed.
|
|
102755
102772
|
`, 0 /* SUCCESS */);
|
|
@@ -102768,7 +102785,8 @@ class PluginUpgradeSubCommand {
|
|
|
102768
102785
|
let upgraded = 0;
|
|
102769
102786
|
for await (const update of pluginService.checkForUpdates()) {
|
|
102770
102787
|
const id3 = getPluginId(update.descriptor);
|
|
102771
|
-
await printerService.info(`Upgrading ${id3} to ${update.availableVersion}
|
|
102788
|
+
await printerService.info(`Upgrading ${id3} to ${update.availableVersion}...
|
|
102789
|
+
`, 3 /* INFORMATION */);
|
|
102772
102790
|
await pluginService.install(update.descriptor);
|
|
102773
102791
|
await printerService.print(`Upgraded ${id3} to ${update.availableVersion}.
|
|
102774
102792
|
`, 0 /* SUCCESS */);
|
|
@@ -103839,6 +103857,13 @@ async function printCommandExecutionError(context, parseResult, err, isDefaultCo
|
|
|
103839
103857
|
`, 1 /* FAILURE */);
|
|
103840
103858
|
}
|
|
103841
103859
|
}
|
|
103860
|
+
async function printRuntimeError(context, err) {
|
|
103861
|
+
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
103862
|
+
await printerService.error(`Execution error:
|
|
103863
|
+
=> ${printerService.yellow(err.message)}
|
|
103864
|
+
|
|
103865
|
+
`, 1 /* FAILURE */);
|
|
103866
|
+
}
|
|
103842
103867
|
async function printNoCommandSpecifiedError(context) {
|
|
103843
103868
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID);
|
|
103844
103869
|
await printerService.error(`No command specified
|
|
@@ -103851,8 +103876,8 @@ async function printNoCommandRecognisedError(context, commandRegistry, available
|
|
|
103851
103876
|
|
|
103852
103877
|
`);
|
|
103853
103878
|
if (availableArgs.length > 0) {
|
|
103854
|
-
const groupCommands = commandRegistry.getGroupCommands();
|
|
103855
|
-
const subCommands = commandRegistry.getSubCommands();
|
|
103879
|
+
const groupCommands = commandRegistry.getGroupCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
103880
|
+
const subCommands = commandRegistry.getSubCommands().filter((command) => !command.disableGenericHelpDisplay);
|
|
103856
103881
|
const allPossibleCommandNames = [];
|
|
103857
103882
|
for (const arg of availableArgs) {
|
|
103858
103883
|
const possibleCommandNames = findPossibleCommandNames(arg, groupCommands, subCommands);
|
|
@@ -104924,6 +104949,7 @@ class CompletionCompleteSubCommand {
|
|
|
104924
104949
|
name = "complete";
|
|
104925
104950
|
description = "Generate completions for shell integration";
|
|
104926
104951
|
enableConfiguration = false;
|
|
104952
|
+
disableGenericHelpDisplay = true;
|
|
104927
104953
|
options = [];
|
|
104928
104954
|
positionals = [
|
|
104929
104955
|
{
|
|
@@ -105104,6 +105130,7 @@ class BaseCLI {
|
|
|
105104
105130
|
return { runState: 130 /* INTERRUPTED */ };
|
|
105105
105131
|
}
|
|
105106
105132
|
logger12.error("Runtime error: %s", error.message);
|
|
105133
|
+
await printRuntimeError(this.#context, error);
|
|
105107
105134
|
return {
|
|
105108
105135
|
runState: 4 /* RUNTIME_ERROR */,
|
|
105109
105136
|
error
|
|
@@ -105459,6 +105486,8 @@ function supportsHyperlinks(stream) {
|
|
|
105459
105486
|
CI,
|
|
105460
105487
|
CURSOR_TRACE_ID,
|
|
105461
105488
|
FORCE_HYPERLINK,
|
|
105489
|
+
LC_TERMINAL,
|
|
105490
|
+
LC_TERMINAL_VERSION,
|
|
105462
105491
|
TEAMCITY_VERSION,
|
|
105463
105492
|
TERM_PROGRAM,
|
|
105464
105493
|
TERM_PROGRAM_VERSION,
|
|
@@ -105508,6 +105537,24 @@ function supportsHyperlinks(stream) {
|
|
|
105508
105537
|
return true;
|
|
105509
105538
|
}
|
|
105510
105539
|
}
|
|
105540
|
+
if (LC_TERMINAL) {
|
|
105541
|
+
const version = parseVersion2(LC_TERMINAL_VERSION);
|
|
105542
|
+
switch (LC_TERMINAL) {
|
|
105543
|
+
case "iTerm2": {
|
|
105544
|
+
if (version.major === 3) {
|
|
105545
|
+
return version.minor >= 1;
|
|
105546
|
+
}
|
|
105547
|
+
return version.major > 3;
|
|
105548
|
+
}
|
|
105549
|
+
case "WezTerm": {
|
|
105550
|
+
if (/^0-unstable-\d{4}-\d{2}-\d{2}$/.test(LC_TERMINAL_VERSION)) {
|
|
105551
|
+
const date = LC_TERMINAL_VERSION.slice("0-unstable-".length);
|
|
105552
|
+
return date >= "2020-06-20";
|
|
105553
|
+
}
|
|
105554
|
+
return version.major >= 20200620;
|
|
105555
|
+
}
|
|
105556
|
+
}
|
|
105557
|
+
}
|
|
105511
105558
|
if (VTE_VERSION) {
|
|
105512
105559
|
if (VTE_VERSION === "0.50.0") {
|
|
105513
105560
|
return false;
|
|
@@ -105531,9 +105578,6 @@ class DefaultRuntimeCLI extends BaseCLI {
|
|
|
105531
105578
|
}
|
|
105532
105579
|
async run() {
|
|
105533
105580
|
const runResult = await super.run(process17.argv.slice(2));
|
|
105534
|
-
if (runResult.runState === 4 /* RUNTIME_ERROR */) {
|
|
105535
|
-
console.error(runResult.error);
|
|
105536
|
-
}
|
|
105537
105581
|
process17.exit(runResult.runState);
|
|
105538
105582
|
}
|
|
105539
105583
|
}
|
|
@@ -17,5 +17,10 @@ export default interface Command {
|
|
|
17
17
|
* default argument values may be sourced using a configuration source provided by the CLI runtime.
|
|
18
18
|
*/
|
|
19
19
|
readonly enableConfiguration?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Optionally hide the command from generic help listings. The command remains registered and
|
|
22
|
+
* executable, and its own usage help (`help <command>`) is still shown if explicitly requested.
|
|
23
|
+
*/
|
|
24
|
+
readonly disableGenericHelpDisplay?: boolean;
|
|
20
25
|
}
|
|
21
26
|
//# sourceMappingURL=Command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../../src/api/command/Command.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,OAAO;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../../src/api/command/Command.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,OAAO;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AA4BjD,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,iCAAiC,CAAC;AAiBzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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,EACpB,OAAO,CAAC,EAAE,qBAAqB;IA2DjC;;;;;;;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;CAiK3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultRuntimeCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/DefaultRuntimeCLI.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultRuntimeCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/DefaultRuntimeCLI.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,qBAAqB,MAAM,iCAAiC,CAAC;AAQzE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;gBACxC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAkBlD,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;CAIzC"}
|
|
@@ -16,6 +16,7 @@ export declare class CompletionCompleteSubCommand implements SubCommand {
|
|
|
16
16
|
readonly name = "complete";
|
|
17
17
|
readonly description = "Generate completions for shell integration";
|
|
18
18
|
readonly enableConfiguration = false;
|
|
19
|
+
readonly disableGenericHelpDisplay = true;
|
|
19
20
|
readonly options: ReadonlyArray<Option>;
|
|
20
21
|
readonly positionals: ReadonlyArray<Positional>;
|
|
21
22
|
execute(context: Context, argumentValues: ArgumentValues): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionCommand.d.ts","sourceRoot":"","sources":["../../../src/command/CompletionCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,uCAAuC,CAAC;AAMnG,qBAAa,+BAAgC,YAAW,UAAU;IAChE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,0CAA0C;IAC9D,QAAQ,CAAC,mBAAmB,SAAS;IAErC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAOrC;IAEF,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAO7C;IAEI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA4D/E;AAED,qBAAa,4BAA6B,YAAW,UAAU;IAC7D,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,gDAAgD;IACpE,QAAQ,CAAC,mBAAmB,SAAS;
|
|
1
|
+
{"version":3,"file":"CompletionCommand.d.ts","sourceRoot":"","sources":["../../../src/command/CompletionCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,uCAAuC,CAAC;AAMnG,qBAAa,+BAAgC,YAAW,UAAU;IAChE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,0CAA0C;IAC9D,QAAQ,CAAC,mBAAmB,SAAS;IAErC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAOrC;IAEF,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAO7C;IAEI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA4D/E;AAED,qBAAa,4BAA6B,YAAW,UAAU;IAC7D,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,gDAAgD;IACpE,QAAQ,CAAC,mBAAmB,SAAS;IACrC,QAAQ,CAAC,yBAAyB,QAAQ;IAE1C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAM;IAE7C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAc7C;IAEI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB/E;AAED,qBAAa,sBAAuB,YAAW,YAAY;IACzD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,kCAAkC;IACtD,QAAQ,CAAC,mBAAmB,SAAS;IACrC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;gBAGpD,kBAAkB,EAAE,+BAA+B,EACnD,eAAe,EAAE,4BAA4B;IAKzC,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiCommandCliHelpCommand.d.ts","sourceRoot":"","sources":["../../../src/command/MultiCommandCliHelpCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAY7C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAC;AAM1E;;GAEG;AACH,uBAAe,kCAAkC;;IAC/C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,8BAA8B;gBAItC,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"MultiCommandCliHelpCommand.d.ts","sourceRoot":"","sources":["../../../src/command/MultiCommandCliHelpCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAY7C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAC;AAM1E;;GAEG;AACH,uBAAe,kCAAkC;;IAC/C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,8BAA8B;gBAItC,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe;cAiIrD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cA+CjD,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoFrF;AAED;;GAEG;AACH,qBAAa,gCACX,SAAQ,kCACR,YAAW,aAAa;IAExB,QAAQ,CAAC,UAAU,OAAO;IAE1B,QAAQ,CAAC,QAAQ;;;;MAIf;IAEW,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/F;AAED;;GAEG;AACH,qBAAa,6BACX,SAAQ,kCACR,YAAW,UAAU;IAErB,SAAgB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAM;IAEpD,SAAgB,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAOpD;IAEW,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultCompletionService.d.ts","sourceRoot":"","sources":["../../../../src/service/completion/DefaultCompletionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,KAAK,eAAe,MAAM,2CAA2C,CAAC;AAS7E,MAAM,CAAC,OAAO,OAAO,wBAAyB,YAAW,iBAAiB;;IAUxE,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAIzF,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAIlD,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,MAAM;IAI3F,sBAAsB,CACpB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAI3C,mBAAmB,CACjB,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultCompletionService.d.ts","sourceRoot":"","sources":["../../../../src/service/completion/DefaultCompletionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,KAAK,eAAe,MAAM,2CAA2C,CAAC;AAS7E,MAAM,CAAC,OAAO,OAAO,wBAAyB,YAAW,iBAAiB;;IAUxE,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAIzF,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAIlD,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,MAAM;IAI3F,sBAAsB,CACpB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAI3C,mBAAmB,CACjB,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;CA8R1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supportsHyperlinks.d.ts","sourceRoot":"","sources":["../../../src/terminal/supportsHyperlinks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAwB5C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"supportsHyperlinks.d.ts","sourceRoot":"","sources":["../../../src/terminal/supportsHyperlinks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAwB5C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAoGnF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpHelper.d.ts","sourceRoot":"","sources":["../../../src/util/helpHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAI7C,OAAO,KAAK,qBAAqB,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAM/D,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,cAAc,MAAM,uCAAuC,CAAC;AAGxE,OAAO,KAAK,qBAAqB,MAAM,8CAA8C,CAAC;AAOtF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACxC;AAsDD,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA8BD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,aAAa,GAC3B,SAAS,CA6DX;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA+C3E;AAkLD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,OAAO,GAC1B,KAAK,CAAC,WAAW,CAAC,CAoBpB;AACD,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,GACrB,KAAK,CAAC,WAAW,CAAC,CAgCpB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,aAAa,CAAC,qBAAqB,CAAC,EAC5D,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,EAC5C,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GACrC,MAAM,CAgJR;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GACrC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"helpHelper.d.ts","sourceRoot":"","sources":["../../../src/util/helpHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAI7C,OAAO,KAAK,qBAAqB,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAM/D,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,cAAc,MAAM,uCAAuC,CAAC;AAGxE,OAAO,KAAK,qBAAqB,MAAM,8CAA8C,CAAC;AAOtF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACxC;AAsDD,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA8BD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,aAAa,GAC3B,SAAS,CA6DX;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA+C3E;AAkLD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,OAAO,GAC1B,KAAK,CAAC,WAAW,CAAC,CAoBpB;AACD,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,GACrB,KAAK,CAAC,WAAW,CAAC,CAgCpB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,aAAa,CAAC,qBAAqB,CAAC,EAC5D,cAAc,EAAE,aAAa,CAAC,aAAa,CAAC,EAC5C,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GACrC,MAAM,CAgJR;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GACrC,MAAM,EAAE,CAkBV"}
|
|
@@ -3,6 +3,7 @@ import type Context from "../api/Context.ts";
|
|
|
3
3
|
import type CommandRegistry from "../runtime/registry/CommandRegistry.ts";
|
|
4
4
|
export declare function printParseResultError(context: Context, parseResult: ParseResult, isDefaultCommand?: boolean): Promise<void>;
|
|
5
5
|
export declare function printCommandExecutionError(context: Context, parseResult: ParseResult, err: Error, isDefaultCommand?: boolean): Promise<void>;
|
|
6
|
+
export declare function printRuntimeError(context: Context, err: Error): Promise<void>;
|
|
6
7
|
export declare function printNoCommandSpecifiedError(context: Context): Promise<void>;
|
|
7
8
|
export declare function printNoCommandRecognisedError(context: Context, commandRegistry: CommandRegistry, availableArgs: ReadonlyArray<string>): Promise<void>;
|
|
8
9
|
export declare function printUnusedArgsWarning(context: Context, overallUnusedArgs: ReadonlyArray<string>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runnerHelper.d.ts","sourceRoot":"","sources":["../../../src/util/runnerHelper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAC;AAY1E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,UAAQ,iBAiBzB;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,KAAK,EACV,gBAAgB,UAAQ,iBAiBzB;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,OAAO,iBAGlE;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"runnerHelper.d.ts","sourceRoot":"","sources":["../../../src/util/runnerHelper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAC;AAY1E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,UAAQ,iBAiBzB;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,KAAK,EACV,gBAAgB,UAAQ,iBAiBzB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,iBAMnE;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,OAAO,iBAGlE;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,iBAgCrC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,iBAQzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginCommand.test.d.ts","sourceRoot":"","sources":["../../../tests/command/PluginCommand.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowscripter/dynamic-cli-framework",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.3",
|
|
4
4
|
"description": "A framework for developing CLI applications which supports dynamic discovery and installation of new commands",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"types": "./dist/index.d.ts",
|
|
36
36
|
"default": "./dist/index.js"
|
|
37
37
|
},
|
|
38
|
-
"./plugin": {
|
|
38
|
+
"./cli-plugin": {
|
|
39
39
|
"bun": "./cli-plugin.ts",
|
|
40
40
|
"types": "./dist/cli-plugin.d.ts",
|
|
41
41
|
"default": "./dist/cli-plugin.js"
|
|
@@ -19,4 +19,10 @@ export default interface Command {
|
|
|
19
19
|
* default argument values may be sourced using a configuration source provided by the CLI runtime.
|
|
20
20
|
*/
|
|
21
21
|
readonly enableConfiguration?: boolean;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Optionally hide the command from generic help listings. The command remains registered and
|
|
25
|
+
* executable, and its own usage help (`help <command>`) is still shown if explicitly requested.
|
|
26
|
+
*/
|
|
27
|
+
readonly disableGenericHelpDisplay?: boolean;
|
|
22
28
|
}
|
package/src/cli/BaseCLI.ts
CHANGED
|
@@ -33,6 +33,7 @@ import ConfigurationServiceProvider from "../service/configuration/Configuration
|
|
|
33
33
|
import PrinterServiceProvider from "../service/printer/PrinterServiceProvider.ts";
|
|
34
34
|
import TableGeneratorServiceProvider from "../service/tableGenerator/TableGeneratorServiceProvider.ts";
|
|
35
35
|
import { run } from "../runtime/runner.ts";
|
|
36
|
+
import { printRuntimeError } from "../util/runnerHelper.ts";
|
|
36
37
|
|
|
37
38
|
import { WritableStream } from "node:stream/web";
|
|
38
39
|
import type Terminal from "../terminal/Terminal.ts";
|
|
@@ -345,6 +346,7 @@ export default class BaseCLI implements CLI {
|
|
|
345
346
|
return { runState: RunState.INTERRUPTED };
|
|
346
347
|
}
|
|
347
348
|
logger.error("Runtime error: %s", (error as Error).message);
|
|
349
|
+
await printRuntimeError(this.#context, error as Error);
|
|
348
350
|
return {
|
|
349
351
|
runState: RunState.RUNTIME_ERROR,
|
|
350
352
|
error: error as Error,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import BaseCLI from "./BaseCLI.ts";
|
|
3
3
|
import type RunResult from "../api/RunResult.ts";
|
|
4
|
-
import { RunState } from "../api/RunResult.ts";
|
|
5
4
|
import type CLIConfig from "../api/CLIConfig.ts";
|
|
6
5
|
import type BaseCLIFeatureOptions from "../api/BaseCLIFeatureOptions.ts";
|
|
7
6
|
import { Writable } from "node:stream";
|
|
@@ -35,9 +34,6 @@ export default class DefaultRuntimeCLI extends BaseCLI {
|
|
|
35
34
|
|
|
36
35
|
override async run(): Promise<RunResult> {
|
|
37
36
|
const runResult = await super.run(process.argv.slice(2));
|
|
38
|
-
if (runResult.runState === RunState.RUNTIME_ERROR) {
|
|
39
|
-
console.error(runResult.error);
|
|
40
|
-
}
|
|
41
37
|
process.exit(runResult.runState);
|
|
42
38
|
}
|
|
43
39
|
}
|
|
@@ -99,6 +99,7 @@ export class CompletionCompleteSubCommand implements SubCommand {
|
|
|
99
99
|
readonly name = "complete";
|
|
100
100
|
readonly description = "Generate completions for shell integration";
|
|
101
101
|
readonly enableConfiguration = false;
|
|
102
|
+
readonly disableGenericHelpDisplay = true;
|
|
102
103
|
|
|
103
104
|
readonly options: ReadonlyArray<Option> = [];
|
|
104
105
|
|
|
@@ -94,11 +94,15 @@ abstract class MultiCommandCliAbstractHelpCommand {
|
|
|
94
94
|
);
|
|
95
95
|
}
|
|
96
96
|
groupCommands.forEach((groupCommand) => {
|
|
97
|
+
const visibleMemberSubCommands = groupCommand.memberSubCommands.filter(
|
|
98
|
+
(memberCommand) => !memberCommand.disableGenericHelpDisplay,
|
|
99
|
+
);
|
|
100
|
+
if (visibleMemberSubCommands.length === 0) return;
|
|
97
101
|
const topicSection: HelpSection = {
|
|
98
102
|
title: `${groupCommand.name.charAt(0).toUpperCase() + groupCommand.name.slice(1)} Commands`,
|
|
99
103
|
helpEntries: [],
|
|
100
104
|
};
|
|
101
|
-
|
|
105
|
+
visibleMemberSubCommands.forEach((memberCommand) => {
|
|
102
106
|
topicSection.helpEntries.push({
|
|
103
107
|
syntax: `${groupCommand.name}:${memberCommand.name}`,
|
|
104
108
|
description: memberCommand.description,
|
|
@@ -166,10 +170,18 @@ abstract class MultiCommandCliAbstractHelpCommand {
|
|
|
166
170
|
TABLE_GENERATOR_SERVICE_ID,
|
|
167
171
|
) as TableGeneratorService;
|
|
168
172
|
|
|
169
|
-
const globalModifierCommands = this.#commandRegistry
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
+
const globalModifierCommands = this.#commandRegistry
|
|
174
|
+
.getGlobalModifierCommands()
|
|
175
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
176
|
+
const globalCommands = this.#commandRegistry
|
|
177
|
+
.getGlobalCommands()
|
|
178
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
179
|
+
const groupCommands = this.#commandRegistry
|
|
180
|
+
.getGroupCommands()
|
|
181
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
182
|
+
const subCommands = this.#commandRegistry
|
|
183
|
+
.getSubCommands()
|
|
184
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
173
185
|
const helpSections: Array<HelpSection> = [];
|
|
174
186
|
helpSections.push({
|
|
175
187
|
title: "Usage",
|
|
@@ -205,8 +217,12 @@ abstract class MultiCommandCliAbstractHelpCommand {
|
|
|
205
217
|
TABLE_GENERATOR_SERVICE_ID,
|
|
206
218
|
) as TableGeneratorService;
|
|
207
219
|
|
|
208
|
-
const groupCommands = this.#commandRegistry
|
|
209
|
-
|
|
220
|
+
const groupCommands = this.#commandRegistry
|
|
221
|
+
.getGroupCommands()
|
|
222
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
223
|
+
const subCommands = this.#commandRegistry
|
|
224
|
+
.getSubCommands()
|
|
225
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
210
226
|
|
|
211
227
|
// find sub-command or group sub-command
|
|
212
228
|
let subCommand = this.#commandRegistry.getSubCommandByName(commandName);
|
|
@@ -89,7 +89,7 @@ export class PluginAddSubCommand implements SubCommand {
|
|
|
89
89
|
const pluginService = context.getServiceById(PLUGIN_SERVICE_ID) as PluginService;
|
|
90
90
|
|
|
91
91
|
const pluginId = argumentValues["pluginId"] as string;
|
|
92
|
-
await printerService.info(`Searching for plugin: ${pluginId}`, Icon.INFORMATION);
|
|
92
|
+
await printerService.info(`Searching for plugin: ${pluginId}\n`, Icon.INFORMATION);
|
|
93
93
|
|
|
94
94
|
let descriptor: VersionedPluginDescriptor | undefined;
|
|
95
95
|
for await (const d of pluginService.search({ text: pluginId })) {
|
|
@@ -104,7 +104,7 @@ export class PluginAddSubCommand implements SubCommand {
|
|
|
104
104
|
// This handles cases where the package exists on the registry but is not
|
|
105
105
|
// returned by search (e.g. recently published or low search ranking).
|
|
106
106
|
await printerService.info(
|
|
107
|
-
`Plugin not found via search, attempting direct install of ${pluginId}
|
|
107
|
+
`Plugin not found via search, attempting direct install of ${pluginId}...\n`,
|
|
108
108
|
Icon.INFORMATION,
|
|
109
109
|
);
|
|
110
110
|
const parts = pluginId.startsWith("@") ? pluginId.slice(1).split("/") : [undefined, pluginId];
|
|
@@ -119,7 +119,7 @@ export class PluginAddSubCommand implements SubCommand {
|
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
await printerService.info(`Installing ${descriptor.pluginId}
|
|
122
|
+
await printerService.info(`Installing ${descriptor.pluginId}...\n`, Icon.INFORMATION);
|
|
123
123
|
await pluginService.install(descriptor);
|
|
124
124
|
await printerService.print(`Plugin ${descriptor.pluginId} installed.\n`, Icon.SUCCESS);
|
|
125
125
|
}
|
|
@@ -143,7 +143,7 @@ export class PluginRemoveSubCommand implements SubCommand {
|
|
|
143
143
|
const pluginService = context.getServiceById(PLUGIN_SERVICE_ID) as PluginService;
|
|
144
144
|
|
|
145
145
|
const pluginId = argumentValues["pluginId"] as string;
|
|
146
|
-
await printerService.info(`Removing plugin: ${pluginId}
|
|
146
|
+
await printerService.info(`Removing plugin: ${pluginId}...\n`, Icon.INFORMATION);
|
|
147
147
|
await pluginService.uninstall(pluginId);
|
|
148
148
|
await printerService.print(`Plugin ${pluginId} removed.\n`, Icon.SUCCESS);
|
|
149
149
|
}
|
|
@@ -164,7 +164,7 @@ export class PluginUpgradeSubCommand implements SubCommand {
|
|
|
164
164
|
for await (const update of pluginService.checkForUpdates()) {
|
|
165
165
|
const id = getPluginId(update.descriptor);
|
|
166
166
|
await printerService.info(
|
|
167
|
-
`Upgrading ${id} to ${update.availableVersion}
|
|
167
|
+
`Upgrading ${id} to ${update.availableVersion}...\n`,
|
|
168
168
|
Icon.INFORMATION,
|
|
169
169
|
);
|
|
170
170
|
await pluginService.install(update.descriptor);
|
|
@@ -112,6 +112,20 @@ export default class DefaultCompletionService implements CompletionService {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
// Check global command (--name pattern)
|
|
116
|
+
if (commandWord.startsWith("--")) {
|
|
117
|
+
const globalCommandName = commandWord.substring(2);
|
|
118
|
+
const globalCommand = this.#commandRegistry!.getGlobalCommandByName(globalCommandName);
|
|
119
|
+
if (globalCommand) {
|
|
120
|
+
if (globalCommand.argument?.allowableValues) {
|
|
121
|
+
return globalCommand.argument.allowableValues
|
|
122
|
+
.filter((v) => String(v).startsWith(currentWord))
|
|
123
|
+
.map((v) => ({ value: String(v) }));
|
|
124
|
+
}
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
115
129
|
// Check sub-command
|
|
116
130
|
const subCommand = this.#commandRegistry!.getSubCommandByName(commandWord);
|
|
117
131
|
if (subCommand) {
|
|
@@ -16,7 +16,7 @@ export default class BashShellHandler implements ShellHandler {
|
|
|
16
16
|
return [
|
|
17
17
|
`_${cliName}_completions() {`,
|
|
18
18
|
` local IFS=$'\\n'`,
|
|
19
|
-
` COMPREPLY=( $("${executablePath}" completions:complete bash "\${COMP_LINE}" "\${COMP_POINT}") )`,
|
|
19
|
+
` COMPREPLY=( $("${executablePath}" completions:complete bash "\${COMP_LINE}" "\${COMP_POINT}" 2>/dev/null) )`,
|
|
20
20
|
`}`,
|
|
21
21
|
`complete -F _${cliName}_completions ${cliName}`,
|
|
22
22
|
].join("\n");
|
|
@@ -13,7 +13,7 @@ export default class FishShellHandler implements ShellHandler {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
getBootstrapScript(cliName: string, executablePath: string): string {
|
|
16
|
-
return `complete -c ${cliName} -f -a '("${executablePath}" completions:complete fish (commandline -cp) (commandline -C))'`;
|
|
16
|
+
return `complete -c ${cliName} -f -a '("${executablePath}" completions:complete fish (commandline -cp) (commandline -C) 2>/dev/null)'`;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
validateEnvironment(): Promise<boolean> {
|
|
@@ -19,7 +19,7 @@ export default class PowerShellShellHandler implements ShellHandler {
|
|
|
19
19
|
return [
|
|
20
20
|
`Register-ArgumentCompleter -Native -CommandName ${cliName} -ScriptBlock {`,
|
|
21
21
|
` param($wordToComplete, $commandAst, $cursorPosition)`,
|
|
22
|
-
` $completions = & "${executablePath}" completions:complete powershell "$commandAst" "$cursorPosition"`,
|
|
22
|
+
` $completions = & "${executablePath}" completions:complete powershell "$commandAst" "$cursorPosition" 2>$null`,
|
|
23
23
|
` $completions -split '\\n' | ForEach-Object {`,
|
|
24
24
|
` [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)`,
|
|
25
25
|
` }`,
|
|
@@ -16,7 +16,7 @@ export default class ZshShellHandler implements ShellHandler {
|
|
|
16
16
|
return [
|
|
17
17
|
`_${cliName}_completions() {`,
|
|
18
18
|
` local -a completions`,
|
|
19
|
-
` completions=("\${(@f)$("${executablePath}" completions:complete zsh "\${words}" "\${CURSOR}")}")`,
|
|
19
|
+
` completions=("\${(@f)$("${executablePath}" completions:complete zsh "\${words}" "\${CURSOR}" 2>/dev/null)}")`,
|
|
20
20
|
` _describe '${cliName}' completions`,
|
|
21
21
|
`}`,
|
|
22
22
|
`compdef _${cliName}_completions ${cliName}`,
|
|
@@ -333,7 +333,7 @@ export default class DefaultTableGeneratorService implements TableGeneratorServi
|
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
if (border) line += this.#colorBorder(BORDER_RIGHT, table);
|
|
336
|
-
output.push(line);
|
|
336
|
+
output.push(border ? line : line.trimEnd());
|
|
337
337
|
}
|
|
338
338
|
|
|
339
339
|
if (border && row < table.rowCount - 1) {
|
|
@@ -28,6 +28,8 @@ export default function supportsHyperlinks(stream: WriteStream | undefined): boo
|
|
|
28
28
|
CI,
|
|
29
29
|
CURSOR_TRACE_ID,
|
|
30
30
|
FORCE_HYPERLINK,
|
|
31
|
+
LC_TERMINAL,
|
|
32
|
+
LC_TERMINAL_VERSION,
|
|
31
33
|
TEAMCITY_VERSION,
|
|
32
34
|
TERM_PROGRAM,
|
|
33
35
|
TERM_PROGRAM_VERSION,
|
|
@@ -85,6 +87,26 @@ export default function supportsHyperlinks(stream: WriteStream | undefined): boo
|
|
|
85
87
|
}
|
|
86
88
|
}
|
|
87
89
|
|
|
90
|
+
if (LC_TERMINAL) {
|
|
91
|
+
const version = parseVersion(LC_TERMINAL_VERSION);
|
|
92
|
+
|
|
93
|
+
switch (LC_TERMINAL) {
|
|
94
|
+
case "iTerm2": {
|
|
95
|
+
if (version.major === 3) {
|
|
96
|
+
return version.minor >= 1;
|
|
97
|
+
}
|
|
98
|
+
return version.major > 3;
|
|
99
|
+
}
|
|
100
|
+
case "WezTerm": {
|
|
101
|
+
if (/^0-unstable-\d{4}-\d{2}-\d{2}$/.test(LC_TERMINAL_VERSION!)) {
|
|
102
|
+
const date = LC_TERMINAL_VERSION!.slice("0-unstable-".length);
|
|
103
|
+
return date >= "2020-06-20";
|
|
104
|
+
}
|
|
105
|
+
return version.major >= 20200620;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
88
110
|
if (VTE_VERSION) {
|
|
89
111
|
if (VTE_VERSION === "0.50.0") {
|
|
90
112
|
return false;
|
package/src/util/helpHelper.ts
CHANGED
|
@@ -684,10 +684,12 @@ export function findPossibleCommandNames(
|
|
|
684
684
|
levenCommandArray.push([distance(subCommand.name, commandName), subCommand.name]);
|
|
685
685
|
});
|
|
686
686
|
groupCommands.forEach((groupCommand) => {
|
|
687
|
-
groupCommand.memberSubCommands
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
687
|
+
groupCommand.memberSubCommands
|
|
688
|
+
.filter((memberCommand) => !memberCommand.disableGenericHelpDisplay)
|
|
689
|
+
.forEach((memberCommand) => {
|
|
690
|
+
const memberName = `${groupCommand.name}:${memberCommand.name}`;
|
|
691
|
+
levenCommandArray.push([distance(memberName, commandName), memberName]);
|
|
692
|
+
});
|
|
691
693
|
});
|
|
692
694
|
return levenCommandArray
|
|
693
695
|
.sort((a, b) => a[0] - b[0])
|
package/src/util/runnerHelper.ts
CHANGED
|
@@ -61,6 +61,14 @@ export async function printCommandExecutionError(
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
export async function printRuntimeError(context: Context, err: Error) {
|
|
65
|
+
const printerService = context.getServiceById(PRINTER_SERVICE_ID) as PrinterService;
|
|
66
|
+
await printerService.error(
|
|
67
|
+
`Execution error: \n => ${printerService.yellow(err.message)}\n\n`,
|
|
68
|
+
Icon.FAILURE,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
64
72
|
export async function printNoCommandSpecifiedError(context: Context) {
|
|
65
73
|
const printerService = context.getServiceById(PRINTER_SERVICE_ID) as PrinterService;
|
|
66
74
|
await printerService.error("No command specified\n\n");
|
|
@@ -75,8 +83,12 @@ export async function printNoCommandRecognisedError(
|
|
|
75
83
|
await printerService.error("No command recognised\n\n");
|
|
76
84
|
|
|
77
85
|
if (availableArgs.length > 0) {
|
|
78
|
-
const groupCommands = commandRegistry
|
|
79
|
-
|
|
86
|
+
const groupCommands = commandRegistry
|
|
87
|
+
.getGroupCommands()
|
|
88
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
89
|
+
const subCommands = commandRegistry
|
|
90
|
+
.getSubCommands()
|
|
91
|
+
.filter((command) => !command.disableGenericHelpDisplay);
|
|
80
92
|
|
|
81
93
|
const allPossibleCommandNames: string[] = [];
|
|
82
94
|
for (const arg of availableArgs) {
|