@flowscripter/dynamic-cli-framework 1.4.19 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/README.md +3 -14
  2. package/cli-plugin.ts +16 -0
  3. package/dist/cli-plugin.d.ts +17 -0
  4. package/dist/cli-plugin.d.ts.map +1 -0
  5. package/dist/cli-plugin.js +69 -0
  6. package/dist/index.d.ts +115 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +105696 -0
  9. package/dist/src/api/BaseCLIFeatureOptions.d.ts +12 -0
  10. package/dist/src/api/BaseCLIFeatureOptions.d.ts.map +1 -0
  11. package/dist/src/api/CLI.d.ts +17 -0
  12. package/dist/src/api/CLI.d.ts.map +1 -0
  13. package/dist/src/api/CLIConfig.d.ts +22 -0
  14. package/dist/src/api/CLIConfig.d.ts.map +1 -0
  15. package/dist/src/api/Context.d.ts +23 -0
  16. package/dist/src/api/Context.d.ts.map +1 -0
  17. package/dist/src/api/RunResult.d.ts +128 -0
  18. package/dist/src/api/RunResult.d.ts.map +1 -0
  19. package/dist/src/api/argument/Argument.d.ts +62 -0
  20. package/dist/src/api/argument/Argument.d.ts.map +1 -0
  21. package/dist/src/api/argument/ArgumentValueTypes.d.ts +68 -0
  22. package/dist/src/api/argument/ArgumentValueTypes.d.ts.map +1 -0
  23. package/dist/src/api/argument/ComplexOption.d.ts +21 -0
  24. package/dist/src/api/argument/ComplexOption.d.ts.map +1 -0
  25. package/dist/src/api/argument/GlobalCommandArgument.d.ts +16 -0
  26. package/dist/src/api/argument/GlobalCommandArgument.d.ts.map +1 -0
  27. package/dist/src/api/argument/Option.d.ts +29 -0
  28. package/dist/src/api/argument/Option.d.ts.map +1 -0
  29. package/dist/src/api/argument/Positional.d.ts +26 -0
  30. package/dist/src/api/argument/Positional.d.ts.map +1 -0
  31. package/dist/src/api/argument/SubCommandArgument.d.ts +18 -0
  32. package/dist/src/api/argument/SubCommandArgument.d.ts.map +1 -0
  33. package/dist/src/api/command/Command.d.ts +21 -0
  34. package/dist/src/api/command/Command.d.ts.map +1 -0
  35. package/dist/src/api/command/GlobalCommand.d.ts +28 -0
  36. package/dist/src/api/command/GlobalCommand.d.ts.map +1 -0
  37. package/dist/src/api/command/GlobalModifierCommand.d.ts +12 -0
  38. package/dist/src/api/command/GlobalModifierCommand.d.ts.map +1 -0
  39. package/dist/src/api/command/GroupCommand.d.ts +19 -0
  40. package/dist/src/api/command/GroupCommand.d.ts.map +1 -0
  41. package/dist/src/api/command/SubCommand.d.ts +37 -0
  42. package/dist/src/api/command/SubCommand.d.ts.map +1 -0
  43. package/dist/src/api/command/UsageExample.d.ts +20 -0
  44. package/dist/src/api/command/UsageExample.d.ts.map +1 -0
  45. package/dist/src/api/plugin/CommandFactory.d.ts +23 -0
  46. package/dist/src/api/plugin/CommandFactory.d.ts.map +1 -0
  47. package/dist/src/api/plugin/ServiceProviderFactory.d.ts +25 -0
  48. package/dist/src/api/plugin/ServiceProviderFactory.d.ts.map +1 -0
  49. package/dist/src/api/service/ServiceProvider.d.ts +47 -0
  50. package/dist/src/api/service/ServiceProvider.d.ts.map +1 -0
  51. package/dist/src/api/service/core/ArgumentPrompterService.d.ts +6 -0
  52. package/dist/src/api/service/core/ArgumentPrompterService.d.ts.map +1 -0
  53. package/dist/src/api/service/core/AsciiBannerGeneratorService.d.ts +59 -0
  54. package/dist/src/api/service/core/AsciiBannerGeneratorService.d.ts.map +1 -0
  55. package/dist/src/api/service/core/CompletionService.d.ts +22 -0
  56. package/dist/src/api/service/core/CompletionService.d.ts.map +1 -0
  57. package/dist/src/api/service/core/DataDumpGeneratorService.d.ts +22 -0
  58. package/dist/src/api/service/core/DataDumpGeneratorService.d.ts.map +1 -0
  59. package/dist/src/api/service/core/ImagePrinterService.d.ts +21 -0
  60. package/dist/src/api/service/core/ImagePrinterService.d.ts.map +1 -0
  61. package/dist/src/api/service/core/KeyValueService.d.ts +40 -0
  62. package/dist/src/api/service/core/KeyValueService.d.ts.map +1 -0
  63. package/dist/src/api/service/core/PluginService.d.ts +55 -0
  64. package/dist/src/api/service/core/PluginService.d.ts.map +1 -0
  65. package/dist/src/api/service/core/PrettyPrinterService.d.ts +35 -0
  66. package/dist/src/api/service/core/PrettyPrinterService.d.ts.map +1 -0
  67. package/dist/src/api/service/core/PrinterService.d.ts +339 -0
  68. package/dist/src/api/service/core/PrinterService.d.ts.map +1 -0
  69. package/dist/src/api/service/core/PrompterService.d.ts +35 -0
  70. package/dist/src/api/service/core/PrompterService.d.ts.map +1 -0
  71. package/dist/src/api/service/core/SecretService.d.ts +25 -0
  72. package/dist/src/api/service/core/SecretService.d.ts.map +1 -0
  73. package/dist/src/api/service/core/ShutdownService.d.ts +24 -0
  74. package/dist/src/api/service/core/ShutdownService.d.ts.map +1 -0
  75. package/dist/src/api/service/core/SyntaxHighlighterService.d.ts +49 -0
  76. package/dist/src/api/service/core/SyntaxHighlighterService.d.ts.map +1 -0
  77. package/dist/src/api/service/core/Table.d.ts +18 -0
  78. package/dist/src/api/service/core/Table.d.ts.map +1 -0
  79. package/dist/src/api/service/core/TableGeneratorService.d.ts +31 -0
  80. package/dist/src/api/service/core/TableGeneratorService.d.ts.map +1 -0
  81. package/dist/src/api/service/core/TreePrinterService.d.ts +9 -0
  82. package/dist/src/api/service/core/TreePrinterService.d.ts.map +1 -0
  83. package/dist/src/cli/BaseCLI.d.ts +59 -0
  84. package/dist/src/cli/BaseCLI.d.ts.map +1 -0
  85. package/dist/src/cli/DefaultRuntimeCLI.d.ts +12 -0
  86. package/dist/src/cli/DefaultRuntimeCLI.d.ts.map +1 -0
  87. package/dist/src/cli/DynamicPluginRuntimeCLI.d.ts +20 -0
  88. package/dist/src/cli/DynamicPluginRuntimeCLI.d.ts.map +1 -0
  89. package/dist/src/command/CompletionCommand.d.ts +31 -0
  90. package/dist/src/command/CompletionCommand.d.ts.map +1 -0
  91. package/dist/src/command/MultiCommandCliHelpCommand.d.ts +40 -0
  92. package/dist/src/command/MultiCommandCliHelpCommand.d.ts.map +1 -0
  93. package/dist/src/command/PluginCommand.d.ts +67 -0
  94. package/dist/src/command/PluginCommand.d.ts.map +1 -0
  95. package/dist/src/command/SingleCommandCliHelpCommand.d.ts +31 -0
  96. package/dist/src/command/SingleCommandCliHelpCommand.d.ts.map +1 -0
  97. package/dist/src/command/UsageCommand.d.ts +14 -0
  98. package/dist/src/command/UsageCommand.d.ts.map +1 -0
  99. package/dist/src/command/VersionCommand.d.ts +12 -0
  100. package/dist/src/command/VersionCommand.d.ts.map +1 -0
  101. package/dist/src/launcher.d.ts +10 -0
  102. package/dist/src/launcher.d.ts.map +1 -0
  103. package/dist/src/runtime/DefaultContext.d.ts +14 -0
  104. package/dist/src/runtime/DefaultContext.d.ts.map +1 -0
  105. package/dist/src/runtime/argument/ArgumentTypeGuards.d.ts +4 -0
  106. package/dist/src/runtime/argument/ArgumentTypeGuards.d.ts.map +1 -0
  107. package/dist/src/runtime/command/CommandTypeGuards.d.ts +10 -0
  108. package/dist/src/runtime/command/CommandTypeGuards.d.ts.map +1 -0
  109. package/dist/src/runtime/command/CommandValidator.d.ts +15 -0
  110. package/dist/src/runtime/command/CommandValidator.d.ts.map +1 -0
  111. package/dist/src/runtime/parser.d.ts +48 -0
  112. package/dist/src/runtime/parser.d.ts.map +1 -0
  113. package/dist/src/runtime/registry/CommandRegistry.d.ts +89 -0
  114. package/dist/src/runtime/registry/CommandRegistry.d.ts.map +1 -0
  115. package/dist/src/runtime/registry/DefaultCommandRegistry.d.ts +51 -0
  116. package/dist/src/runtime/registry/DefaultCommandRegistry.d.ts.map +1 -0
  117. package/dist/src/runtime/registry/DefaultServiceProviderRegistry.d.ts +12 -0
  118. package/dist/src/runtime/registry/DefaultServiceProviderRegistry.d.ts.map +1 -0
  119. package/dist/src/runtime/registry/ServiceProviderRegistry.d.ts +11 -0
  120. package/dist/src/runtime/registry/ServiceProviderRegistry.d.ts.map +1 -0
  121. package/dist/src/runtime/runner.d.ts +76 -0
  122. package/dist/src/runtime/runner.d.ts.map +1 -0
  123. package/dist/src/runtime/scanner.d.ts +69 -0
  124. package/dist/src/runtime/scanner.d.ts.map +1 -0
  125. package/dist/src/runtime/values/ValuePopulationResult.d.ts +34 -0
  126. package/dist/src/runtime/values/ValuePopulationResult.d.ts.map +1 -0
  127. package/dist/src/runtime/values/argumentValueMerge.d.ts +13 -0
  128. package/dist/src/runtime/values/argumentValueMerge.d.ts.map +1 -0
  129. package/dist/src/runtime/values/argumentValueValidation.d.ts +33 -0
  130. package/dist/src/runtime/values/argumentValueValidation.d.ts.map +1 -0
  131. package/dist/src/runtime/values/globalCommandValuePopulation.d.ts +12 -0
  132. package/dist/src/runtime/values/globalCommandValuePopulation.d.ts.map +1 -0
  133. package/dist/src/runtime/values/subCommandValuePopulation.d.ts +12 -0
  134. package/dist/src/runtime/values/subCommandValuePopulation.d.ts.map +1 -0
  135. package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.d.ts +13 -0
  136. package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.d.ts.map +1 -0
  137. package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.d.ts +9 -0
  138. package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.d.ts.map +1 -0
  139. package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.d.ts +20 -0
  140. package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.d.ts.map +1 -0
  141. package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.d.ts +12 -0
  142. package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.d.ts.map +1 -0
  143. package/dist/src/service/banner/BannerServiceProvider.d.ts +29 -0
  144. package/dist/src/service/banner/BannerServiceProvider.d.ts.map +1 -0
  145. package/dist/src/service/banner/command/NoBannerCommand.d.ts +19 -0
  146. package/dist/src/service/banner/command/NoBannerCommand.d.ts.map +1 -0
  147. package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.d.ts +22 -0
  148. package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.d.ts.map +1 -0
  149. package/dist/src/service/completion/CompletionServiceProvider.d.ts +14 -0
  150. package/dist/src/service/completion/CompletionServiceProvider.d.ts.map +1 -0
  151. package/dist/src/service/completion/DefaultCompletionService.d.ts +17 -0
  152. package/dist/src/service/completion/DefaultCompletionService.d.ts.map +1 -0
  153. package/dist/src/service/completion/shell/ShellHandler.d.ts +13 -0
  154. package/dist/src/service/completion/shell/ShellHandler.d.ts.map +1 -0
  155. package/dist/src/service/completion/shell/bash.d.ts +11 -0
  156. package/dist/src/service/completion/shell/bash.d.ts.map +1 -0
  157. package/dist/src/service/completion/shell/fish.d.ts +11 -0
  158. package/dist/src/service/completion/shell/fish.d.ts.map +1 -0
  159. package/dist/src/service/completion/shell/powershell.d.ts +11 -0
  160. package/dist/src/service/completion/shell/powershell.d.ts.map +1 -0
  161. package/dist/src/service/completion/shell/zsh.d.ts +11 -0
  162. package/dist/src/service/completion/shell/zsh.d.ts.map +1 -0
  163. package/dist/src/service/configuration/ConfigurationServiceProvider.d.ts +196 -0
  164. package/dist/src/service/configuration/ConfigurationServiceProvider.d.ts.map +1 -0
  165. package/dist/src/service/configuration/DefaultKeyValueService.d.ts +14 -0
  166. package/dist/src/service/configuration/DefaultKeyValueService.d.ts.map +1 -0
  167. package/dist/src/service/configuration/DefaultSecretService.d.ts +27 -0
  168. package/dist/src/service/configuration/DefaultSecretService.d.ts.map +1 -0
  169. package/dist/src/service/configuration/command/ConfigCommand.d.ts +19 -0
  170. package/dist/src/service/configuration/command/ConfigCommand.d.ts.map +1 -0
  171. package/dist/src/service/configuration/command/DumpConfigCommand.d.ts +14 -0
  172. package/dist/src/service/configuration/command/DumpConfigCommand.d.ts.map +1 -0
  173. package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.d.ts +12 -0
  174. package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.d.ts.map +1 -0
  175. package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.d.ts +10 -0
  176. package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.d.ts.map +1 -0
  177. package/dist/src/service/imagePrinter/DefaultImagePrinterService.d.ts +8 -0
  178. package/dist/src/service/imagePrinter/DefaultImagePrinterService.d.ts.map +1 -0
  179. package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.d.ts +13 -0
  180. package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.d.ts.map +1 -0
  181. package/dist/src/service/plugin/DefaultPluginService.d.ts +15 -0
  182. package/dist/src/service/plugin/DefaultPluginService.d.ts.map +1 -0
  183. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +13 -0
  184. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -0
  185. package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts +13 -0
  186. package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts.map +1 -0
  187. package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.d.ts +20 -0
  188. package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.d.ts.map +1 -0
  189. package/dist/src/service/printer/DefaultPrinterService.d.ts +61 -0
  190. package/dist/src/service/printer/DefaultPrinterService.d.ts.map +1 -0
  191. package/dist/src/service/printer/PrinterServiceProvider.d.ts +22 -0
  192. package/dist/src/service/printer/PrinterServiceProvider.d.ts.map +1 -0
  193. package/dist/src/service/printer/command/DarkModeCommand.d.ts +19 -0
  194. package/dist/src/service/printer/command/DarkModeCommand.d.ts.map +1 -0
  195. package/dist/src/service/printer/command/LogLevelCommand.d.ts +19 -0
  196. package/dist/src/service/printer/command/LogLevelCommand.d.ts.map +1 -0
  197. package/dist/src/service/printer/command/NoColorCommand.d.ts +19 -0
  198. package/dist/src/service/printer/command/NoColorCommand.d.ts.map +1 -0
  199. package/dist/src/service/printer/command/NoHyperlinksCommand.d.ts +16 -0
  200. package/dist/src/service/printer/command/NoHyperlinksCommand.d.ts.map +1 -0
  201. package/dist/src/service/printer/terminal/Color.d.ts +15 -0
  202. package/dist/src/service/printer/terminal/Color.d.ts.map +1 -0
  203. package/dist/src/service/printer/terminal/Progress.d.ts +20 -0
  204. package/dist/src/service/printer/terminal/Progress.d.ts.map +1 -0
  205. package/dist/src/service/printer/terminal/Spinner.d.ts +16 -0
  206. package/dist/src/service/printer/terminal/Spinner.d.ts.map +1 -0
  207. package/dist/src/service/printer/terminal/Theme.d.ts +3 -0
  208. package/dist/src/service/printer/terminal/Theme.d.ts.map +1 -0
  209. package/dist/src/service/prompter/DefaultPrompterService.d.ts +21 -0
  210. package/dist/src/service/prompter/DefaultPrompterService.d.ts.map +1 -0
  211. package/dist/src/service/prompter/PrompterServiceProvider.d.ts +13 -0
  212. package/dist/src/service/prompter/PrompterServiceProvider.d.ts.map +1 -0
  213. package/dist/src/service/prompter/command/NoPromptCommand.d.ts +16 -0
  214. package/dist/src/service/prompter/command/NoPromptCommand.d.ts.map +1 -0
  215. package/dist/src/service/prompter/prompt/PromptContext.d.ts +15 -0
  216. package/dist/src/service/prompter/prompt/PromptContext.d.ts.map +1 -0
  217. package/dist/src/service/prompter/prompt/promptAcknowledge.d.ts +4 -0
  218. package/dist/src/service/prompter/prompt/promptAcknowledge.d.ts.map +1 -0
  219. package/dist/src/service/prompter/prompt/promptMultiSelect.d.ts +4 -0
  220. package/dist/src/service/prompter/prompt/promptMultiSelect.d.ts.map +1 -0
  221. package/dist/src/service/prompter/prompt/promptOpenUrl.d.ts +4 -0
  222. package/dist/src/service/prompter/prompt/promptOpenUrl.d.ts.map +1 -0
  223. package/dist/src/service/prompter/prompt/promptSingleSelect.d.ts +4 -0
  224. package/dist/src/service/prompter/prompt/promptSingleSelect.d.ts.map +1 -0
  225. package/dist/src/service/prompter/prompt/promptText.d.ts +4 -0
  226. package/dist/src/service/prompter/prompt/promptText.d.ts.map +1 -0
  227. package/dist/src/service/prompter/prompt/promptToggle.d.ts +4 -0
  228. package/dist/src/service/prompter/prompt/promptToggle.d.ts.map +1 -0
  229. package/dist/src/service/shutdown/DefaultShutdownService.d.ts +9 -0
  230. package/dist/src/service/shutdown/DefaultShutdownService.d.ts.map +1 -0
  231. package/dist/src/service/shutdown/ShutdownServiceProvider.d.ts +15 -0
  232. package/dist/src/service/shutdown/ShutdownServiceProvider.d.ts.map +1 -0
  233. package/dist/src/service/shutdown/ShutdownState.d.ts +6 -0
  234. package/dist/src/service/shutdown/ShutdownState.d.ts.map +1 -0
  235. package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.d.ts +17 -0
  236. package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.d.ts.map +1 -0
  237. package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.d.ts +20 -0
  238. package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.d.ts.map +1 -0
  239. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts +10 -0
  240. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts.map +1 -0
  241. package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.d.ts +12 -0
  242. package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.d.ts.map +1 -0
  243. package/dist/src/service/treePrinter/DefaultTreePrinterService.d.ts +10 -0
  244. package/dist/src/service/treePrinter/DefaultTreePrinterService.d.ts.map +1 -0
  245. package/dist/src/service/treePrinter/TreePrinterServiceProvider.d.ts +12 -0
  246. package/dist/src/service/treePrinter/TreePrinterServiceProvider.d.ts.map +1 -0
  247. package/dist/src/terminal/Ansi.d.ts +14 -0
  248. package/dist/src/terminal/Ansi.d.ts.map +1 -0
  249. package/dist/src/terminal/ImageRenderer.d.ts +7 -0
  250. package/dist/src/terminal/ImageRenderer.d.ts.map +1 -0
  251. package/dist/src/terminal/KeyReader.d.ts +22 -0
  252. package/dist/src/terminal/KeyReader.d.ts.map +1 -0
  253. package/dist/src/terminal/PngDecoder.d.ts +6 -0
  254. package/dist/src/terminal/PngDecoder.d.ts.map +1 -0
  255. package/dist/src/terminal/Styler.d.ts +9 -0
  256. package/dist/src/terminal/Styler.d.ts.map +1 -0
  257. package/dist/src/terminal/Terminal.d.ts +10 -0
  258. package/dist/src/terminal/Terminal.d.ts.map +1 -0
  259. package/dist/src/terminal/TtyKeyReader.d.ts +11 -0
  260. package/dist/src/terminal/TtyKeyReader.d.ts.map +1 -0
  261. package/dist/src/terminal/TtyStyler.d.ts +19 -0
  262. package/dist/src/terminal/TtyStyler.d.ts.map +1 -0
  263. package/dist/src/terminal/TtyTerminal.d.ts +14 -0
  264. package/dist/src/terminal/TtyTerminal.d.ts.map +1 -0
  265. package/dist/src/terminal/supportsHyperlinks.d.ts +3 -0
  266. package/dist/src/terminal/supportsHyperlinks.d.ts.map +1 -0
  267. package/dist/src/util/configHelper.d.ts +22 -0
  268. package/dist/src/util/configHelper.d.ts.map +1 -0
  269. package/dist/src/util/envVarHelper.d.ts +21 -0
  270. package/dist/src/util/envVarHelper.d.ts.map +1 -0
  271. package/dist/src/util/helpHelper.d.ts +26 -0
  272. package/dist/src/util/helpHelper.d.ts.map +1 -0
  273. package/dist/src/util/logger.d.ts +18 -0
  274. package/dist/src/util/logger.d.ts.map +1 -0
  275. package/dist/src/util/runnerHelper.d.ts +9 -0
  276. package/dist/src/util/runnerHelper.d.ts.map +1 -0
  277. package/dist/tests/cli/BaseCLI.test.d.ts +2 -0
  278. package/dist/tests/cli/BaseCLI.test.d.ts.map +1 -0
  279. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts +2 -0
  280. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts.map +1 -0
  281. package/dist/tests/command/CompletionCommand.test.d.ts +2 -0
  282. package/dist/tests/command/CompletionCommand.test.d.ts.map +1 -0
  283. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts +2 -0
  284. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts.map +1 -0
  285. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts +2 -0
  286. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts.map +1 -0
  287. package/dist/tests/command/UsageCommand.test.d.ts +2 -0
  288. package/dist/tests/command/UsageCommand.test.d.ts.map +1 -0
  289. package/dist/tests/command/VersionCommand.test.d.ts +2 -0
  290. package/dist/tests/command/VersionCommand.test.d.ts.map +1 -0
  291. package/dist/tests/fixtures/CLIConfig.d.ts +3 -0
  292. package/dist/tests/fixtures/CLIConfig.d.ts.map +1 -0
  293. package/dist/tests/fixtures/Command.d.ts +20 -0
  294. package/dist/tests/fixtures/Command.d.ts.map +1 -0
  295. package/{tests/fixtures/CommandRegistry.ts → dist/tests/fixtures/CommandRegistry.d.ts} +2 -4
  296. package/dist/tests/fixtures/CommandRegistry.d.ts.map +1 -0
  297. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts +10 -0
  298. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts.map +1 -0
  299. package/dist/tests/fixtures/Context.d.ts +4 -0
  300. package/dist/tests/fixtures/Context.d.ts.map +1 -0
  301. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts +4 -0
  302. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts.map +1 -0
  303. package/dist/tests/fixtures/StreamString.d.ts +10 -0
  304. package/dist/tests/fixtures/StreamString.d.ts.map +1 -0
  305. package/dist/tests/fixtures/prettierPluginFoo.d.ts +4 -0
  306. package/dist/tests/fixtures/prettierPluginFoo.d.ts.map +1 -0
  307. package/dist/tests/fixtures/util.d.ts +8 -0
  308. package/dist/tests/fixtures/util.d.ts.map +1 -0
  309. package/dist/tests/runtime/DefaultContext.test.d.ts +2 -0
  310. package/dist/tests/runtime/DefaultContext.test.d.ts.map +1 -0
  311. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts +2 -0
  312. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts.map +1 -0
  313. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts +2 -0
  314. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts.map +1 -0
  315. package/dist/tests/runtime/command/CommandValidator.test.d.ts +2 -0
  316. package/dist/tests/runtime/command/CommandValidator.test.d.ts.map +1 -0
  317. package/dist/tests/runtime/parser.test.d.ts +2 -0
  318. package/dist/tests/runtime/parser.test.d.ts.map +1 -0
  319. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts +2 -0
  320. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts.map +1 -0
  321. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts +2 -0
  322. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts.map +1 -0
  323. package/dist/tests/runtime/runner.test.d.ts +2 -0
  324. package/dist/tests/runtime/runner.test.d.ts.map +1 -0
  325. package/dist/tests/runtime/scanner.test.d.ts +2 -0
  326. package/dist/tests/runtime/scanner.test.d.ts.map +1 -0
  327. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts +2 -0
  328. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts.map +1 -0
  329. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts +2 -0
  330. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts.map +1 -0
  331. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts +2 -0
  332. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts.map +1 -0
  333. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts +2 -0
  334. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts.map +1 -0
  335. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts +2 -0
  336. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts.map +1 -0
  337. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts +2 -0
  338. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts.map +1 -0
  339. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts +2 -0
  340. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts.map +1 -0
  341. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts +2 -0
  342. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts.map +1 -0
  343. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts +2 -0
  344. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts.map +1 -0
  345. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts +2 -0
  346. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts.map +1 -0
  347. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts +2 -0
  348. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts.map +1 -0
  349. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts +2 -0
  350. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts.map +1 -0
  351. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts +2 -0
  352. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts.map +1 -0
  353. package/dist/tests/service/completion/shell/bash.test.d.ts +2 -0
  354. package/dist/tests/service/completion/shell/bash.test.d.ts.map +1 -0
  355. package/dist/tests/service/completion/shell/fish.test.d.ts +2 -0
  356. package/dist/tests/service/completion/shell/fish.test.d.ts.map +1 -0
  357. package/dist/tests/service/completion/shell/powershell.test.d.ts +2 -0
  358. package/dist/tests/service/completion/shell/powershell.test.d.ts.map +1 -0
  359. package/dist/tests/service/completion/shell/zsh.test.d.ts +2 -0
  360. package/dist/tests/service/completion/shell/zsh.test.d.ts.map +1 -0
  361. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts +2 -0
  362. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts.map +1 -0
  363. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts +2 -0
  364. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts.map +1 -0
  365. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts +2 -0
  366. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts.map +1 -0
  367. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts +2 -0
  368. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts.map +1 -0
  369. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts +2 -0
  370. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts.map +1 -0
  371. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts +2 -0
  372. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts.map +1 -0
  373. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts +2 -0
  374. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts.map +1 -0
  375. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts +2 -0
  376. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts.map +1 -0
  377. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts +2 -0
  378. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts.map +1 -0
  379. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts +2 -0
  380. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts.map +1 -0
  381. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts +2 -0
  382. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts.map +1 -0
  383. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts +2 -0
  384. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts.map +1 -0
  385. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts +2 -0
  386. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts.map +1 -0
  387. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts +2 -0
  388. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts.map +1 -0
  389. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts +2 -0
  390. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts.map +1 -0
  391. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts +2 -0
  392. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts.map +1 -0
  393. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts +2 -0
  394. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts.map +1 -0
  395. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts +2 -0
  396. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts.map +1 -0
  397. package/dist/tests/service/printer/terminal/Progress.test.d.ts +2 -0
  398. package/dist/tests/service/printer/terminal/Progress.test.d.ts.map +1 -0
  399. package/dist/tests/service/printer/terminal/Spinner.test.d.ts +2 -0
  400. package/dist/tests/service/printer/terminal/Spinner.test.d.ts.map +1 -0
  401. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts +2 -0
  402. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts.map +1 -0
  403. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts +2 -0
  404. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts.map +1 -0
  405. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts +2 -0
  406. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts.map +1 -0
  407. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts +2 -0
  408. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts.map +1 -0
  409. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts +2 -0
  410. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts.map +1 -0
  411. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts +2 -0
  412. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts.map +1 -0
  413. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts +2 -0
  414. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts.map +1 -0
  415. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts +2 -0
  416. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts.map +1 -0
  417. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts +2 -0
  418. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts.map +1 -0
  419. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts +2 -0
  420. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts.map +1 -0
  421. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts +2 -0
  422. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts.map +1 -0
  423. package/dist/tests/terminal/ImageRenderer.test.d.ts +2 -0
  424. package/dist/tests/terminal/ImageRenderer.test.d.ts.map +1 -0
  425. package/dist/tests/terminal/PngDecoder.test.d.ts +2 -0
  426. package/dist/tests/terminal/PngDecoder.test.d.ts.map +1 -0
  427. package/dist/tests/terminal/supportsHyperlinks.test.d.ts +2 -0
  428. package/dist/tests/terminal/supportsHyperlinks.test.d.ts.map +1 -0
  429. package/dist/tests/util/configHelper.test.d.ts +2 -0
  430. package/dist/tests/util/configHelper.test.d.ts.map +1 -0
  431. package/dist/tests/util/envVarHelper.test.d.ts +2 -0
  432. package/dist/tests/util/envVarHelper.test.d.ts.map +1 -0
  433. package/dist/tests/util/logger.test.d.ts +2 -0
  434. package/dist/tests/util/logger.test.d.ts.map +1 -0
  435. package/index.ts +15 -1
  436. package/package.json +28 -2
  437. package/src/api/plugin/CommandFactory.ts +25 -0
  438. package/src/api/plugin/ServiceProviderFactory.ts +27 -0
  439. package/src/api/service/core/PluginService.ts +63 -0
  440. package/src/cli/DynamicPluginRuntimeCLI.ts +77 -0
  441. package/src/command/PluginCommand.ts +184 -0
  442. package/src/launcher.ts +35 -0
  443. package/src/service/plugin/DefaultPluginService.ts +37 -0
  444. package/src/service/plugin/DefaultPluginServiceProvider.ts +29 -0
  445. package/.github/workflows/check-bun-dependencies.yml +0 -12
  446. package/.github/workflows/lint-pr-message.yml +0 -13
  447. package/.github/workflows/release-bun-library.yml +0 -15
  448. package/.github/workflows/validate-bun-library-pr.yml +0 -10
  449. package/README/core-commands.md +0 -40
  450. package/README/core-service-providers.md +0 -198
  451. package/README/development.md +0 -57
  452. package/README/implementation-details.md +0 -474
  453. package/README/key-concepts.md +0 -751
  454. package/bun.lock +0 -156
  455. package/tests/cli/BaseCLI.test.ts +0 -283
  456. package/tests/command/CompletionCommand.test.ts +0 -63
  457. package/tests/command/MultiCommandCliHelpCommand.test.ts +0 -496
  458. package/tests/command/SingleCommandCliHelpCommand.test.ts +0 -302
  459. package/tests/command/UsageCommand.test.ts +0 -48
  460. package/tests/command/VersionCommand.test.ts +0 -37
  461. package/tests/fixtures/CLIConfig.ts +0 -9
  462. package/tests/fixtures/Command.ts +0 -248
  463. package/tests/fixtures/ConfigurationServiceProvider.ts +0 -28
  464. package/tests/fixtures/Context.ts +0 -32
  465. package/tests/fixtures/ServiceProviderRegistry.ts +0 -16
  466. package/tests/fixtures/StreamString.ts +0 -37
  467. package/tests/fixtures/prettierPluginFoo.ts +0 -31
  468. package/tests/fixtures/util.ts +0 -35
  469. package/tests/runtime/DefaultContext.test.ts +0 -20
  470. package/tests/runtime/argument/ArgumentTypeGuards.test.ts +0 -47
  471. package/tests/runtime/command/CommandTypeGuards.test.ts +0 -43
  472. package/tests/runtime/command/CommandValidator.test.ts +0 -1196
  473. package/tests/runtime/parser.test.ts +0 -744
  474. package/tests/runtime/registry/DefaultCommandRegistry.test.ts +0 -144
  475. package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +0 -36
  476. package/tests/runtime/runner.test.ts +0 -1284
  477. package/tests/runtime/scanner.test.ts +0 -915
  478. package/tests/runtime/values/argumentValueMerge.test.ts +0 -366
  479. package/tests/runtime/values/argumentValueValidation.test.ts +0 -1090
  480. package/tests/runtime/values/globalCommandValuePopulation.test.ts +0 -480
  481. package/tests/runtime/values/subCommandValuePopulation.test.ts +0 -2430
  482. package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +0 -38
  483. package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +0 -745
  484. package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +0 -17
  485. package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +0 -208
  486. package/tests/service/asciiBannerGenerator/__snapshots__/DefaultAsciiBannerGeneratorService.test.ts.snap +0 -20
  487. package/tests/service/asciiBannerGenerator/small.flf.json +0 -3
  488. package/tests/service/banner/BannerServiceProvider.test.ts +0 -87
  489. package/tests/service/banner/__snapshots__/BannerServiceProvider.test.ts.snap +0 -16
  490. package/tests/service/banner/command/NoBannerCommand.test.ts +0 -18
  491. package/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.ts +0 -52
  492. package/tests/service/completion/CompletionServiceProvider.test.ts +0 -335
  493. package/tests/service/completion/DefaultCompletionService.test.ts +0 -216
  494. package/tests/service/completion/shell/bash.test.ts +0 -73
  495. package/tests/service/completion/shell/fish.test.ts +0 -60
  496. package/tests/service/completion/shell/powershell.test.ts +0 -59
  497. package/tests/service/completion/shell/zsh.test.ts +0 -60
  498. package/tests/service/configuration/ConfigurationServiceProvider.test.ts +0 -212
  499. package/tests/service/configuration/DefaultKeyValueService.test.ts +0 -155
  500. package/tests/service/configuration/DefaultSecretService.test.ts +0 -140
  501. package/tests/service/configuration/command/ConfigCommand.test.ts +0 -29
  502. package/tests/service/configuration/command/DumpConfigCommand.test.ts +0 -51
  503. package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +0 -51
  504. package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +0 -208
  505. package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +0 -31
  506. package/tests/service/imagePrinter/ImagePrinterServiceProvider.test.ts +0 -17
  507. package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +0 -46
  508. package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +0 -37
  509. package/tests/service/printer/DefaultPrinterService.test.ts +0 -530
  510. package/tests/service/printer/PrinterServiceProvider.test.ts +0 -34
  511. package/tests/service/printer/command/DarkModeCommand.test.ts +0 -75
  512. package/tests/service/printer/command/LogLevelCommand.test.ts +0 -47
  513. package/tests/service/printer/command/NoColorCommand.test.ts +0 -75
  514. package/tests/service/printer/command/NoHyperlinksCommand.test.ts +0 -75
  515. package/tests/service/printer/terminal/Progress.test.ts +0 -98
  516. package/tests/service/printer/terminal/Spinner.test.ts +0 -92
  517. package/tests/service/prompter/DefaultPrompterService.test.ts +0 -598
  518. package/tests/service/prompter/PrompterServiceProvider.test.ts +0 -41
  519. package/tests/service/prompter/command/NoPromptCommand.test.ts +0 -58
  520. package/tests/service/prompter/prompt/PromptContext.test.ts +0 -61
  521. package/tests/service/shutdown/ShutdownServiceProvider.test.ts +0 -13
  522. package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +0 -101
  523. package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +0 -37
  524. package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +0 -342
  525. package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +0 -47
  526. package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +0 -142
  527. package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +0 -51
  528. package/tests/terminal/ImageRenderer.test.ts +0 -152
  529. package/tests/terminal/PngDecoder.test.ts +0 -219
  530. package/tests/terminal/supportsHyperlinks.test.ts +0 -149
  531. package/tests/util/configHelper.test.ts +0 -193
  532. package/tests/util/envVarHelper.test.ts +0 -254
  533. package/tests/util/logger.test.ts +0 -56
  534. package/tsconfig.json +0 -32
@@ -1,915 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import {
3
- getGlobalCommandWithShortAlias,
4
- getGlobalModifierCommand,
5
- getGroupCommand,
6
- getSubCommandWithComplexOptions,
7
- getSubCommandWithOptionAndPositional,
8
- } from "../fixtures/Command.ts";
9
- import {
10
- scanForGlobalModifierCommandClauses,
11
- scanForNonModifierCommandClause,
12
- type ScanResult,
13
- } from "../../src/runtime/scanner.ts";
14
- import type GlobalModifierCommand from "../../src/api/command/GlobalModifierCommand.ts";
15
- import type GroupCommand from "../../src/api/command/GroupCommand.ts";
16
- import type SubCommand from "../../src/api/command/SubCommand.ts";
17
- import type GlobalCommand from "../../src/api/command/GlobalCommand.ts";
18
- import type Command from "../../src/api/command/Command.ts";
19
-
20
- function expectScanResult(result: ScanResult, expected: ScanResult) {
21
- expect(result.unusedArgSequences).toEqual(expected.unusedArgSequences);
22
- expect(result.nonModifierCommandClause).toEqual(expected.nonModifierCommandClause!);
23
- expect(result.globalModifierCommandClauses).toEqual(expected.globalModifierCommandClauses!);
24
- }
25
- describe("scanner tests", () => {
26
- test("Global modifier command scanned", () => {
27
- const globalModifierCommand = getGlobalModifierCommand("modifier", "m", true, true);
28
- const globalModifierCommandsByName: ReadonlyMap<string, GlobalModifierCommand> = new Map([
29
- [globalModifierCommand.name, globalModifierCommand],
30
- ]);
31
- const globalModifierCommandsByShortAlias: ReadonlyMap<string, GlobalModifierCommand> = new Map([
32
- [globalModifierCommand.shortAlias!, globalModifierCommand],
33
- ]);
34
-
35
- const expected: ScanResult = {
36
- globalModifierCommandClauses: [
37
- {
38
- command: globalModifierCommand,
39
- potentialArgs: ["g", "bar"],
40
- },
41
- ],
42
- unusedArgSequences: [],
43
- };
44
-
45
- let scanResult = scanForGlobalModifierCommandClauses(
46
- [["--modifier", "g", "bar"]],
47
- globalModifierCommandsByName,
48
- globalModifierCommandsByShortAlias,
49
- );
50
- expectScanResult(scanResult, expected);
51
-
52
- scanResult = scanForGlobalModifierCommandClauses(
53
- [["--modifier=g", "bar"]],
54
- globalModifierCommandsByName,
55
- globalModifierCommandsByShortAlias,
56
- );
57
- expectScanResult(scanResult, expected);
58
-
59
- scanResult = scanForGlobalModifierCommandClauses(
60
- [["-m", "g", "bar"]],
61
- globalModifierCommandsByName,
62
- globalModifierCommandsByShortAlias,
63
- );
64
- expectScanResult(scanResult, expected);
65
-
66
- scanResult = scanForGlobalModifierCommandClauses(
67
- [["-m=g", "bar"]],
68
- globalModifierCommandsByName,
69
- globalModifierCommandsByShortAlias,
70
- );
71
- expectScanResult(scanResult, expected);
72
-
73
- scanResult = scanForGlobalModifierCommandClauses(
74
- [[], ["--modifier", "g", "bar"]],
75
- globalModifierCommandsByName,
76
- globalModifierCommandsByShortAlias,
77
- );
78
- expectScanResult(scanResult, expected);
79
-
80
- scanResult = scanForGlobalModifierCommandClauses(
81
- [["--modifier", "g", "bar"], []],
82
- globalModifierCommandsByName,
83
- globalModifierCommandsByShortAlias,
84
- );
85
- expectScanResult(scanResult, expected);
86
- });
87
-
88
- test("Two global modifier commands scanned", () => {
89
- const globalModifierCommand1 = getGlobalModifierCommand("modifier1", "1", true, true);
90
- const globalModifierCommand2 = getGlobalModifierCommand("modifier2", "2", true, true);
91
- const globalModifierCommandsByName: ReadonlyMap<string, GlobalModifierCommand> = new Map([
92
- [globalModifierCommand1.name, globalModifierCommand1],
93
- [globalModifierCommand2.name, globalModifierCommand2],
94
- ]);
95
- const globalModifierCommandsByShortAlias: ReadonlyMap<string, GlobalModifierCommand> = new Map([
96
- [globalModifierCommand1.shortAlias!, globalModifierCommand1],
97
- [globalModifierCommand2.shortAlias!, globalModifierCommand2],
98
- ]);
99
-
100
- let expected: ScanResult = {
101
- globalModifierCommandClauses: [
102
- {
103
- command: globalModifierCommand1,
104
- potentialArgs: ["g", "bar"],
105
- },
106
- {
107
- command: globalModifierCommand2,
108
- potentialArgs: ["g", "bar"],
109
- },
110
- ],
111
- unusedArgSequences: [],
112
- };
113
-
114
- let scanResult = scanForGlobalModifierCommandClauses(
115
- [["--modifier1", "g", "bar", "--modifier2", "g", "bar"]],
116
- globalModifierCommandsByName,
117
- globalModifierCommandsByShortAlias,
118
- );
119
- expectScanResult(scanResult, expected);
120
-
121
- scanResult = scanForGlobalModifierCommandClauses(
122
- [["--modifier1=g", "bar", "--modifier2=g", "bar"]],
123
- globalModifierCommandsByName,
124
- globalModifierCommandsByShortAlias,
125
- );
126
- expectScanResult(scanResult, expected);
127
-
128
- scanResult = scanForGlobalModifierCommandClauses(
129
- [["-1", "g", "bar", "-2", "g", "bar"]],
130
- globalModifierCommandsByName,
131
- globalModifierCommandsByShortAlias,
132
- );
133
- expectScanResult(scanResult, expected);
134
-
135
- scanResult = scanForGlobalModifierCommandClauses(
136
- [["-1=g", "bar", "-2=g", "bar"]],
137
- globalModifierCommandsByName,
138
- globalModifierCommandsByShortAlias,
139
- );
140
- expectScanResult(scanResult, expected);
141
-
142
- scanResult = scanForGlobalModifierCommandClauses(
143
- [[], ["-1=g", "bar", "-2=g", "bar"]],
144
- globalModifierCommandsByName,
145
- globalModifierCommandsByShortAlias,
146
- );
147
- expectScanResult(scanResult, expected);
148
-
149
- expected = {
150
- globalModifierCommandClauses: [
151
- {
152
- command: globalModifierCommand1,
153
- potentialArgs: ["g", "bar"],
154
- },
155
- {
156
- command: globalModifierCommand2,
157
- potentialArgs: ["g", "bar"],
158
- },
159
- ],
160
- unusedArgSequences: [],
161
- };
162
-
163
- scanResult = scanForGlobalModifierCommandClauses(
164
- [
165
- ["-1=g", "bar"],
166
- ["-2=g", "bar"],
167
- ],
168
- globalModifierCommandsByName,
169
- globalModifierCommandsByShortAlias,
170
- );
171
- expectScanResult(scanResult, expected);
172
- });
173
-
174
- test("Unused leading args whilst scanning for global modifier command", () => {
175
- const globalModifierCommand = getGlobalModifierCommand("modifier", "m", true, true);
176
- const globalModifierCommandsByName: ReadonlyMap<string, GlobalModifierCommand> = new Map([
177
- [globalModifierCommand.name, globalModifierCommand],
178
- ]);
179
- const globalModifierCommandsByShortAlias: ReadonlyMap<string, GlobalModifierCommand> = new Map([
180
- [globalModifierCommand.shortAlias!, globalModifierCommand],
181
- ]);
182
-
183
- let scanResult = scanForGlobalModifierCommandClauses(
184
- [["hello", "--world", "subCommand", "bar", "--goo", "g", "--modifier", "g", "bar"]],
185
- globalModifierCommandsByName,
186
- globalModifierCommandsByShortAlias,
187
- );
188
- expectScanResult(scanResult, {
189
- globalModifierCommandClauses: [
190
- {
191
- command: globalModifierCommand,
192
- potentialArgs: ["g", "bar"],
193
- },
194
- ],
195
- unusedArgSequences: [["hello", "--world", "subCommand", "bar", "--goo", "g"]],
196
- });
197
-
198
- scanResult = scanForGlobalModifierCommandClauses(
199
- [["hello", "--world", "--modifier", "g", "bar", "--globalCommand", "bar", "--goo", "g"]],
200
- globalModifierCommandsByName,
201
- globalModifierCommandsByShortAlias,
202
- );
203
- expectScanResult(scanResult, {
204
- globalModifierCommandClauses: [
205
- {
206
- command: globalModifierCommand,
207
- potentialArgs: ["g", "bar", "--globalCommand", "bar", "--goo", "g"],
208
- },
209
- ],
210
- unusedArgSequences: [["hello", "--world"]],
211
- });
212
- scanResult = scanForGlobalModifierCommandClauses(
213
- [
214
- ["hello", "--world"],
215
- ["--modifier", "g", "bar", "--globalCommand", "bar", "--goo", "g"],
216
- ],
217
- globalModifierCommandsByName,
218
- globalModifierCommandsByShortAlias,
219
- );
220
- expectScanResult(scanResult, {
221
- globalModifierCommandClauses: [
222
- {
223
- command: globalModifierCommand,
224
- potentialArgs: ["g", "bar", "--globalCommand", "bar", "--goo", "g"],
225
- },
226
- ],
227
- unusedArgSequences: [["hello", "--world"]],
228
- });
229
- });
230
-
231
- test("Sub-command scanned", () => {
232
- const subCommand = getSubCommandWithOptionAndPositional();
233
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
234
- [subCommand.name, subCommand],
235
- ]);
236
- let scanResult = scanForNonModifierCommandClause(
237
- [["subCommand", "bar", "--goo", "g"]],
238
- nonModifierCommandsByName,
239
- );
240
- expectScanResult(scanResult, {
241
- nonModifierCommandClause: {
242
- command: subCommand,
243
- potentialArgs: ["bar", "--goo", "g"],
244
- },
245
- unusedArgSequences: [],
246
- });
247
-
248
- scanResult = scanForNonModifierCommandClause(
249
- [[], ["subCommand", "bar", "--goo", "g"]],
250
- nonModifierCommandsByName,
251
- );
252
-
253
- expectScanResult(scanResult, {
254
- nonModifierCommandClause: {
255
- command: subCommand,
256
- potentialArgs: ["bar", "--goo", "g"],
257
- },
258
- unusedArgSequences: [],
259
- });
260
-
261
- scanResult = scanForNonModifierCommandClause(
262
- [["subCommand", "bar", "--goo", "g"]],
263
- nonModifierCommandsByName,
264
- );
265
-
266
- expectScanResult(scanResult, {
267
- nonModifierCommandClause: {
268
- command: subCommand,
269
- potentialArgs: ["bar", "--goo", "g"],
270
- },
271
- unusedArgSequences: [],
272
- });
273
- });
274
-
275
- test("Global command scanned", () => {
276
- const globalCommand = getGlobalCommandWithShortAlias("globalCommand", "g");
277
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
278
- [globalCommand.name, globalCommand],
279
- ]);
280
- const globalCommandsByShortAlias: ReadonlyMap<string, GlobalCommand> = new Map([
281
- [globalCommand.shortAlias!, globalCommand],
282
- ]);
283
-
284
- let expected: ScanResult = {
285
- nonModifierCommandClause: {
286
- command: globalCommand,
287
- potentialArgs: ["g", "bar"],
288
- },
289
- unusedArgSequences: [],
290
- };
291
-
292
- let scanResult = scanForNonModifierCommandClause(
293
- [["--globalCommand", "g", "bar"]],
294
- nonModifierCommandsByName,
295
- globalCommandsByShortAlias,
296
- );
297
- expectScanResult(scanResult, expected);
298
-
299
- scanResult = scanForNonModifierCommandClause(
300
- [["--globalCommand=g", "bar"]],
301
- nonModifierCommandsByName,
302
- globalCommandsByShortAlias,
303
- );
304
- expectScanResult(scanResult, expected);
305
-
306
- scanResult = scanForNonModifierCommandClause(
307
- [["-g", "g", "bar"]],
308
- nonModifierCommandsByName,
309
- globalCommandsByShortAlias,
310
- );
311
- expectScanResult(scanResult, expected);
312
-
313
- scanResult = scanForNonModifierCommandClause(
314
- [["-g=g", "bar"]],
315
- nonModifierCommandsByName,
316
- globalCommandsByShortAlias,
317
- );
318
- expectScanResult(scanResult, expected);
319
-
320
- expected = {
321
- nonModifierCommandClause: {
322
- command: globalCommand,
323
- potentialArgs: ["g", "bar"],
324
- },
325
- unusedArgSequences: [],
326
- };
327
-
328
- scanResult = scanForNonModifierCommandClause(
329
- [["-g=g", "bar"]],
330
- nonModifierCommandsByName,
331
- globalCommandsByShortAlias,
332
- );
333
- expectScanResult(scanResult, expected);
334
-
335
- scanResult = scanForNonModifierCommandClause(
336
- [["-g=g", "bar"]],
337
- nonModifierCommandsByName,
338
- globalCommandsByShortAlias,
339
- );
340
- expectScanResult(scanResult, expected);
341
- });
342
-
343
- test("Group command scanned", () => {
344
- const subCommand = getSubCommandWithOptionAndPositional();
345
- const groupCommand = getGroupCommand("group", [subCommand]);
346
- const groupAndMemberCommandsByJoinedName: ReadonlyMap<
347
- string,
348
- { groupCommand: GroupCommand; command: SubCommand }
349
- > = new Map([
350
- [
351
- `${groupCommand.name}:${subCommand.name}`,
352
- {
353
- groupCommand,
354
- command: subCommand,
355
- },
356
- ],
357
- ]);
358
- let expected: ScanResult = {
359
- nonModifierCommandClause: {
360
- groupCommand,
361
- command: subCommand,
362
- potentialArgs: ["bar", "--goo", "g"],
363
- },
364
- unusedArgSequences: [],
365
- };
366
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
367
- [groupCommand.name, groupCommand],
368
- ]);
369
-
370
- let scanResult = scanForNonModifierCommandClause(
371
- [["group", "subCommand", "bar", "--goo", "g"]],
372
- nonModifierCommandsByName,
373
- new Map(),
374
- groupAndMemberCommandsByJoinedName,
375
- );
376
- expectScanResult(scanResult, expected);
377
-
378
- scanResult = scanForNonModifierCommandClause(
379
- [["group:subCommand", "bar", "--goo", "g"]],
380
- new Map(),
381
- new Map(),
382
- groupAndMemberCommandsByJoinedName,
383
- );
384
- expectScanResult(scanResult, expected);
385
-
386
- expected = {
387
- nonModifierCommandClause: {
388
- groupCommand,
389
- command: subCommand,
390
- potentialArgs: ["bar", "--goo", "g"],
391
- },
392
- unusedArgSequences: [],
393
- };
394
-
395
- scanResult = scanForNonModifierCommandClause(
396
- [["group:subCommand", "bar", "--goo", "g"]],
397
- new Map(),
398
- new Map(),
399
- groupAndMemberCommandsByJoinedName,
400
- );
401
- expectScanResult(scanResult, expected);
402
- });
403
-
404
- test("Unused leading args whilst scanning for non-modifier command", () => {
405
- const globalCommand = getGlobalCommandWithShortAlias("globalCommand", "g");
406
- const subCommand = getSubCommandWithOptionAndPositional();
407
-
408
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
409
- [globalCommand.name, globalCommand as Command],
410
- [subCommand.name, subCommand as Command],
411
- ]);
412
- const globalCommandsByShortAlias: ReadonlyMap<string, GlobalCommand> = new Map([
413
- [globalCommand.shortAlias!, globalCommand],
414
- ]);
415
-
416
- let scanResult = scanForNonModifierCommandClause(
417
- [["hello", "--world", "subCommand", "bar", "--goo", "g", "--modifier", "g", "bar"]],
418
- nonModifierCommandsByName,
419
- globalCommandsByShortAlias,
420
- );
421
- expectScanResult(scanResult, {
422
- nonModifierCommandClause: {
423
- command: subCommand,
424
- potentialArgs: ["bar", "--goo", "g", "--modifier", "g", "bar"],
425
- },
426
- unusedArgSequences: [["hello", "--world"]],
427
- });
428
-
429
- scanResult = scanForNonModifierCommandClause(
430
- [["hello", "--world", "--globalCommand", "bar", "--goo", "g", "--modifier", "g", "bar"]],
431
- nonModifierCommandsByName,
432
- globalCommandsByShortAlias,
433
- );
434
- expectScanResult(scanResult, {
435
- nonModifierCommandClause: {
436
- command: globalCommand,
437
- potentialArgs: ["bar", "--goo", "g", "--modifier", "g", "bar"],
438
- },
439
- unusedArgSequences: [["hello", "--world"]],
440
- });
441
- scanResult = scanForNonModifierCommandClause(
442
- [
443
- ["hello", "--world", "--globalCommand", "bar", "--goo", "g"],
444
- ["--modifier", "g", "bar"],
445
- ],
446
- nonModifierCommandsByName,
447
- globalCommandsByShortAlias,
448
- );
449
- expectScanResult(scanResult, {
450
- nonModifierCommandClause: {
451
- command: globalCommand,
452
- potentialArgs: ["bar", "--goo", "g"],
453
- },
454
- unusedArgSequences: [
455
- ["hello", "--world"],
456
- ["--modifier", "g", "bar"],
457
- ],
458
- });
459
- });
460
-
461
- test("Sub-command with complex options scanned", () => {
462
- const subCommand = getSubCommandWithComplexOptions();
463
-
464
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
465
- [subCommand.name, subCommand],
466
- ]);
467
-
468
- let scanResult = scanForNonModifierCommandClause(
469
- [
470
- [
471
- "subCommand",
472
- "-a.b.g=foo1",
473
- "-a.b.d=1",
474
- "-a.b.g=foo2",
475
- "-a.b.d=2",
476
- "-a.b.d=3",
477
- "-e.g=bar",
478
- "-e.d=1",
479
- ],
480
- ],
481
- nonModifierCommandsByName,
482
- );
483
- expectScanResult(scanResult, {
484
- nonModifierCommandClause: {
485
- command: subCommand,
486
- potentialArgs: [
487
- "-a.b.g=foo1",
488
- "-a.b.d=1",
489
- "-a.b.g=foo2",
490
- "-a.b.d=2",
491
- "-a.b.d=3",
492
- "-e.g=bar",
493
- "-e.d=1",
494
- ],
495
- },
496
- unusedArgSequences: [],
497
- });
498
- scanResult = scanForNonModifierCommandClause(
499
- [
500
- [
501
- "subCommand",
502
- "--alpha.beta.gamma=foo1",
503
- "-a.b.d=1",
504
- "-a.b.g=foo2",
505
- "-a.b.d=2",
506
- "-a.b.d=3",
507
- "-e.g=bar",
508
- "-e.d=1",
509
- ],
510
- ],
511
- nonModifierCommandsByName,
512
- );
513
- expectScanResult(scanResult, {
514
- nonModifierCommandClause: {
515
- command: subCommand,
516
- potentialArgs: [
517
- "--alpha.beta.gamma=foo1",
518
- "-a.b.d=1",
519
- "-a.b.g=foo2",
520
- "-a.b.d=2",
521
- "-a.b.d=3",
522
- "-e.g=bar",
523
- "-e.d=1",
524
- ],
525
- },
526
- unusedArgSequences: [],
527
- });
528
- scanResult = scanForNonModifierCommandClause(
529
- [
530
- [
531
- "subCommand",
532
- "-e.g=bar",
533
- "-e.d=1",
534
- "-a.b[1].g=foo2",
535
- "--alpha.beta[0].gamma=foo1",
536
- "-a.b[1].d[1]=2",
537
- "-a.b[0].d=1",
538
- "-a.b[1].d[0]=3",
539
- ],
540
- ],
541
- nonModifierCommandsByName,
542
- );
543
- expectScanResult(scanResult, {
544
- nonModifierCommandClause: {
545
- command: subCommand,
546
- potentialArgs: [
547
- "-e.g=bar",
548
- "-e.d=1",
549
- "-a.b[1].g=foo2",
550
- "--alpha.beta[0].gamma=foo1",
551
- "-a.b[1].d[1]=2",
552
- "-a.b[0].d=1",
553
- "-a.b[1].d[0]=3",
554
- ],
555
- },
556
- unusedArgSequences: [],
557
- });
558
- });
559
-
560
- test("Sub-command member not scanned if parent not specified", () => {
561
- const subCommand = getSubCommandWithOptionAndPositional();
562
- const groupCommand = getGroupCommand("group", [subCommand]);
563
- const groupAndMemberCommandsByJoinedName: ReadonlyMap<
564
- string,
565
- { groupCommand: GroupCommand; command: SubCommand }
566
- > = new Map([
567
- [
568
- `${groupCommand.name}:${subCommand.name}`,
569
- {
570
- groupCommand,
571
- command: subCommand,
572
- },
573
- ],
574
- ]);
575
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
576
- [groupCommand.name, groupCommand],
577
- ]);
578
-
579
- const scanResult = scanForNonModifierCommandClause(
580
- [["subCommand", "foo", "--goo", "g"]],
581
- nonModifierCommandsByName,
582
- new Map(),
583
- groupAndMemberCommandsByJoinedName,
584
- );
585
- expectScanResult(scanResult, {
586
- unusedArgSequences: [["subCommand", "foo", "--goo", "g"]],
587
- });
588
- });
589
-
590
- test("Global command normalising (tricky scenario 1)", () => {
591
- const globalCommand = getGlobalCommandWithShortAlias("globalCommand", "g");
592
-
593
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
594
- [globalCommand.name, globalCommand],
595
- ]);
596
- const globalCommandsByShortAlias: ReadonlyMap<string, GlobalCommand> = new Map([
597
- [globalCommand.shortAlias!, globalCommand],
598
- ]);
599
-
600
- const expected: ScanResult = {
601
- nonModifierCommandClause: {
602
- command: globalCommand,
603
- potentialArgs: ["g=2", "bar=2"],
604
- },
605
- unusedArgSequences: [],
606
- };
607
-
608
- let scanResult = scanForNonModifierCommandClause(
609
- [["--globalCommand", "g=2", "bar=2"]],
610
- nonModifierCommandsByName,
611
- globalCommandsByShortAlias,
612
- );
613
- expectScanResult(scanResult, expected);
614
-
615
- scanResult = scanForNonModifierCommandClause(
616
- [["--globalCommand=g=2", "bar=2"]],
617
- nonModifierCommandsByName,
618
- globalCommandsByShortAlias,
619
- );
620
- expectScanResult(scanResult, expected);
621
-
622
- scanResult = scanForNonModifierCommandClause(
623
- [["-g", "g=2", "bar=2"]],
624
- nonModifierCommandsByName,
625
- globalCommandsByShortAlias,
626
- );
627
- expectScanResult(scanResult, expected);
628
-
629
- scanResult = scanForNonModifierCommandClause(
630
- [["-g=g=2", "bar=2"]],
631
- nonModifierCommandsByName,
632
- globalCommandsByShortAlias,
633
- );
634
- expectScanResult(scanResult, expected);
635
- });
636
-
637
- test("Global command normalising (tricky scenario 2)", () => {
638
- const globalCommand = getGlobalCommandWithShortAlias("globalCommand", "g");
639
-
640
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
641
- [globalCommand.name, globalCommand],
642
- ]);
643
- const globalCommandsByShortAlias: ReadonlyMap<string, GlobalCommand> = new Map([
644
- [globalCommand.shortAlias!, globalCommand],
645
- ]);
646
-
647
- const expected: ScanResult = {
648
- nonModifierCommandClause: {
649
- command: globalCommand,
650
- potentialArgs: ["g="],
651
- },
652
- unusedArgSequences: [],
653
- };
654
-
655
- const scanResult = scanForNonModifierCommandClause(
656
- [["--globalCommand", "g="]],
657
- nonModifierCommandsByName,
658
- globalCommandsByShortAlias,
659
- );
660
- expectScanResult(scanResult, expected);
661
- });
662
-
663
- test("Two sub-commands specified (illegal scenario)", () => {
664
- const subCommand = getSubCommandWithOptionAndPositional();
665
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
666
- [subCommand.name, subCommand],
667
- ]);
668
-
669
- const scanResult = scanForNonModifierCommandClause(
670
- [["subCommand", "bar", "--goo", "g", "subCommand", "bar"]],
671
- nonModifierCommandsByName,
672
- );
673
- expectScanResult(scanResult, {
674
- nonModifierCommandClause: {
675
- command: subCommand,
676
- potentialArgs: ["bar", "--goo", "g", "subCommand", "bar"],
677
- },
678
- unusedArgSequences: [],
679
- });
680
- });
681
-
682
- test("Unknown group member command rejected", () => {
683
- const subCommand = getSubCommandWithOptionAndPositional();
684
- const groupCommand = getGroupCommand("group", [subCommand]);
685
- const groupAndMemberCommandsByJoinedName: ReadonlyMap<
686
- string,
687
- { groupCommand: GroupCommand; command: SubCommand }
688
- > = new Map([
689
- [
690
- `${groupCommand.name}:${subCommand.name}`,
691
- {
692
- groupCommand,
693
- command: subCommand,
694
- },
695
- ],
696
- ]);
697
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
698
- [groupCommand.name, groupCommand],
699
- ]);
700
-
701
- let scanResult = scanForNonModifierCommandClause(
702
- [["group", "blah", "bar", "--goo", "g"]],
703
- nonModifierCommandsByName,
704
- new Map(),
705
- groupAndMemberCommandsByJoinedName,
706
- );
707
- expectScanResult(scanResult, {
708
- unusedArgSequences: [["group", "blah", "bar", "--goo", "g"]],
709
- });
710
-
711
- scanResult = scanForNonModifierCommandClause(
712
- [["group:blah", "bar", "--goo", "g"]],
713
- nonModifierCommandsByName,
714
- new Map(),
715
- groupAndMemberCommandsByJoinedName,
716
- );
717
- expectScanResult(scanResult, {
718
- unusedArgSequences: [["group:blah", "bar", "--goo", "g"]],
719
- });
720
- });
721
-
722
- test("Two group commands scanned (illegal scenario)", () => {
723
- const subCommand = getSubCommandWithOptionAndPositional();
724
- const groupCommand1 = getGroupCommand("group1", [subCommand]);
725
- const groupCommand2 = getGroupCommand("group2", [subCommand]);
726
- const groupAndMemberCommandsByJoinedName: ReadonlyMap<
727
- string,
728
- { groupCommand: GroupCommand; command: SubCommand }
729
- > = new Map([
730
- [
731
- `${groupCommand1.name}:${subCommand.name}`,
732
- {
733
- groupCommand: groupCommand1,
734
- command: subCommand,
735
- },
736
- ],
737
- [
738
- `${groupCommand2.name}:${subCommand.name}`,
739
- {
740
- groupCommand: groupCommand2,
741
- command: subCommand,
742
- },
743
- ],
744
- ]);
745
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
746
- [groupCommand1.name, groupCommand1],
747
- [groupCommand2.name, groupCommand2],
748
- ]);
749
-
750
- let scanResult = scanForNonModifierCommandClause(
751
- [["group1", "subCommand", "bar", "--goo", "g", "group2", "subCommand", "bar", "--goo", "g"]],
752
- nonModifierCommandsByName,
753
- new Map(),
754
- groupAndMemberCommandsByJoinedName,
755
- );
756
- expectScanResult(scanResult, {
757
- nonModifierCommandClause: {
758
- groupCommand: groupCommand1,
759
- command: subCommand,
760
- potentialArgs: ["bar", "--goo", "g", "group2", "subCommand", "bar", "--goo", "g"],
761
- },
762
- unusedArgSequences: [],
763
- });
764
-
765
- scanResult = scanForNonModifierCommandClause(
766
- [["group1", "subCommand", "bar", "--goo", "g", "group2:command", "bar", "--goo", "g"]],
767
- new Map(),
768
- new Map(),
769
- groupAndMemberCommandsByJoinedName,
770
- );
771
- expectScanResult(scanResult, {
772
- nonModifierCommandClause: {
773
- groupCommand: groupCommand1,
774
- command: subCommand,
775
- potentialArgs: ["bar", "--goo", "g", "group2:command", "bar", "--goo", "g"],
776
- },
777
- unusedArgSequences: [],
778
- });
779
- });
780
-
781
- test("Global command and sub-command scanned (illegal scenario)", () => {
782
- const globalCommand = getGlobalCommandWithShortAlias("globalCommand", "g");
783
- const subCommand = getSubCommandWithOptionAndPositional();
784
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
785
- [subCommand.name, subCommand as Command],
786
- [globalCommand.name, globalCommand as Command],
787
- ]);
788
- const globalCommandsByShortAlias: ReadonlyMap<string, GlobalCommand> = new Map([
789
- [globalCommand.shortAlias!, globalCommand],
790
- ]);
791
-
792
- let scanResult = scanForNonModifierCommandClause(
793
- [
794
- [
795
- "subCommand",
796
- "bar",
797
- "--goo",
798
- "g",
799
- "--modifier1",
800
- "g",
801
- "bar",
802
- "--globalCommand",
803
- "bar",
804
- "--goo",
805
- "g",
806
- "--modifier2",
807
- "g",
808
- "bar",
809
- ],
810
- ],
811
- nonModifierCommandsByName,
812
- globalCommandsByShortAlias,
813
- );
814
- expectScanResult(scanResult, {
815
- nonModifierCommandClause: {
816
- command: subCommand,
817
- potentialArgs: [
818
- "bar",
819
- "--goo",
820
- "g",
821
- "--modifier1",
822
- "g",
823
- "bar",
824
- "--globalCommand",
825
- "bar",
826
- "--goo",
827
- "g",
828
- "--modifier2",
829
- "g",
830
- "bar",
831
- ],
832
- },
833
- unusedArgSequences: [],
834
- });
835
-
836
- scanResult = scanForNonModifierCommandClause(
837
- [["subCommand", "bar", "--goo=g", "-1=g", "bar", "-g=bar", "--goo", "g", "-2=g", "bar"]],
838
- nonModifierCommandsByName,
839
- globalCommandsByShortAlias,
840
- );
841
- expectScanResult(scanResult, {
842
- nonModifierCommandClause: {
843
- command: subCommand,
844
- potentialArgs: ["bar", "--goo=g", "-1=g", "bar", "-g=bar", "--goo", "g", "-2=g", "bar"],
845
- },
846
- unusedArgSequences: [],
847
- });
848
- });
849
-
850
- test("Group command and sub-command scanned (illegal scenario)", () => {
851
- const subCommand = getSubCommandWithOptionAndPositional();
852
- const groupCommand = getGroupCommand("group", [subCommand]);
853
- const nonModifierCommandsByName: ReadonlyMap<string, Command> = new Map([
854
- [subCommand.name, subCommand as Command],
855
- [groupCommand.name, groupCommand as Command],
856
- ]);
857
- const groupAndMemberCommandsByJoinedName: ReadonlyMap<
858
- string,
859
- { groupCommand: GroupCommand; command: SubCommand }
860
- > = new Map([
861
- [
862
- `${groupCommand.name}:${subCommand.name}`,
863
- {
864
- groupCommand,
865
- command: subCommand,
866
- },
867
- ],
868
- ]);
869
-
870
- const scanResult = scanForNonModifierCommandClause(
871
- [
872
- [
873
- "subCommand",
874
- "bar",
875
- "--goo",
876
- "g",
877
- "--modifier1",
878
- "g",
879
- "bar",
880
- "group:command",
881
- "bar",
882
- "--goo",
883
- "g",
884
- "--modifier2",
885
- "g",
886
- "bar",
887
- ],
888
- ],
889
- nonModifierCommandsByName,
890
- new Map(),
891
- groupAndMemberCommandsByJoinedName,
892
- );
893
- expectScanResult(scanResult, {
894
- nonModifierCommandClause: {
895
- command: subCommand,
896
- potentialArgs: [
897
- "bar",
898
- "--goo",
899
- "g",
900
- "--modifier1",
901
- "g",
902
- "bar",
903
- "group:command",
904
- "bar",
905
- "--goo",
906
- "g",
907
- "--modifier2",
908
- "g",
909
- "bar",
910
- ],
911
- },
912
- unusedArgSequences: [],
913
- });
914
- });
915
- });