@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.
Files changed (31) hide show
  1. package/dist/index.js +67 -23
  2. package/dist/src/api/command/Command.d.ts +5 -0
  3. package/dist/src/api/command/Command.d.ts.map +1 -1
  4. package/dist/src/cli/BaseCLI.d.ts.map +1 -1
  5. package/dist/src/cli/DefaultRuntimeCLI.d.ts.map +1 -1
  6. package/dist/src/command/CompletionCommand.d.ts +1 -0
  7. package/dist/src/command/CompletionCommand.d.ts.map +1 -1
  8. package/dist/src/command/MultiCommandCliHelpCommand.d.ts.map +1 -1
  9. package/dist/src/service/completion/DefaultCompletionService.d.ts.map +1 -1
  10. package/dist/src/terminal/supportsHyperlinks.d.ts.map +1 -1
  11. package/dist/src/util/helpHelper.d.ts.map +1 -1
  12. package/dist/src/util/runnerHelper.d.ts +1 -0
  13. package/dist/src/util/runnerHelper.d.ts.map +1 -1
  14. package/dist/tests/command/PluginCommand.test.d.ts +2 -0
  15. package/dist/tests/command/PluginCommand.test.d.ts.map +1 -0
  16. package/package.json +2 -2
  17. package/src/api/command/Command.ts +6 -0
  18. package/src/cli/BaseCLI.ts +2 -0
  19. package/src/cli/DefaultRuntimeCLI.ts +0 -4
  20. package/src/command/CompletionCommand.ts +1 -0
  21. package/src/command/MultiCommandCliHelpCommand.ts +23 -7
  22. package/src/command/PluginCommand.ts +5 -5
  23. package/src/service/completion/DefaultCompletionService.ts +14 -0
  24. package/src/service/completion/shell/bash.ts +1 -1
  25. package/src/service/completion/shell/fish.ts +1 -1
  26. package/src/service/completion/shell/powershell.ts +1 -1
  27. package/src/service/completion/shell/zsh.ts +1 -1
  28. package/src/service/tableGenerator/DefaultTableGeneratorService.ts +1 -1
  29. package/src/terminal/supportsHyperlinks.ts +22 -0
  30. package/src/util/helpHelper.ts +6 -4
  31. 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
- groupCommand.memberSubCommands.forEach((memberCommand) => {
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}`, 3 /* INFORMATION */);
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}...`, 3 /* INFORMATION */);
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}...`, 3 /* INFORMATION */);
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}...`, 3 /* INFORMATION */);
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}...`, 3 /* INFORMATION */);
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;CACxC"}
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;AA2BjD,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;CAgK3D"}
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;AAEjD,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;CAOzC"}
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;IAErC,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
+ {"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;cA6HrD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAuCjD,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgFrF;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
+ {"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;CAgR1C"}
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,CA8EnF"}
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,CAgBV"}
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,iBA4BrC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,iBAQzC"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PluginCommand.test.d.ts.map
@@ -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.2",
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
  }
@@ -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
- groupCommand.memberSubCommands.forEach((memberCommand) => {
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.getGlobalModifierCommands();
170
- const globalCommands = this.#commandRegistry.getGlobalCommands();
171
- const groupCommands = this.#commandRegistry.getGroupCommands();
172
- const subCommands = this.#commandRegistry.getSubCommands();
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.getGroupCommands();
209
- const subCommands = this.#commandRegistry.getSubCommands();
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}...`, Icon.INFORMATION);
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}...`, Icon.INFORMATION);
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;
@@ -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.forEach((memberCommand) => {
688
- const memberName = `${groupCommand.name}:${memberCommand.name}`;
689
- levenCommandArray.push([distance(memberName, commandName), memberName]);
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])
@@ -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.getGroupCommands();
79
- const subCommands = commandRegistry.getSubCommands();
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) {