@flowscripter/dynamic-cli-framework 1.4.18 → 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,1196 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { getCLIConfig } from "../../fixtures/CLIConfig.ts";
3
- import CommandValidator from "../../../src/runtime/command/CommandValidator.ts";
4
- import {
5
- getGlobalCommandWithShortAlias,
6
- getGroupCommand,
7
- getSubCommandWithComplexOptions,
8
- } from "../../fixtures/Command.ts";
9
- import type ComplexOption from "../../../src/api/argument/ComplexOption.ts";
10
- import {
11
- ArgumentValueTypeName,
12
- ComplexValueTypeName,
13
- } from "../../../src/api/argument/ArgumentValueTypes.ts";
14
- import type Option from "../../../src/api/argument/Option.ts";
15
- import type Positional from "../../../src/api/argument/Positional.ts";
16
- import type SubCommand from "../../../src/api/command/SubCommand.ts";
17
-
18
- function getSubCommand(
19
- name: string,
20
- options: ReadonlyArray<Option | ComplexOption>,
21
- positionals: ReadonlyArray<Positional>,
22
- enableConfiguration = false,
23
- ): SubCommand {
24
- return {
25
- name,
26
- options,
27
- positionals,
28
- enableConfiguration,
29
- execute: async (): Promise<void> => {},
30
- };
31
- }
32
- describe("CommandValidator tests", () => {
33
- test("SubCommand validation fails due to duplicate argument names", () => {
34
- let command = getSubCommand(
35
- "command",
36
- [
37
- {
38
- name: "foo",
39
- type: ArgumentValueTypeName.STRING,
40
- },
41
- {
42
- name: "foo",
43
- type: ArgumentValueTypeName.STRING,
44
- },
45
- ],
46
- [],
47
- );
48
-
49
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
50
-
51
- command = getSubCommand(
52
- "command",
53
- [
54
- {
55
- name: "foo",
56
- type: ArgumentValueTypeName.STRING,
57
- },
58
- ],
59
- [
60
- {
61
- name: "foo",
62
- type: ArgumentValueTypeName.STRING,
63
- },
64
- ],
65
- );
66
-
67
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
68
- command = getSubCommand(
69
- "command",
70
- [],
71
- [
72
- {
73
- name: "foo",
74
- type: ArgumentValueTypeName.STRING,
75
- },
76
- {
77
- name: "foo",
78
- type: ArgumentValueTypeName.STRING,
79
- },
80
- ],
81
- );
82
-
83
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
84
- });
85
-
86
- test("SubCommand validation fails due to duplicate argument names or short aliases", () => {
87
- let command = getSubCommand(
88
- "command",
89
- [
90
- {
91
- name: "f",
92
- type: ArgumentValueTypeName.STRING,
93
- },
94
- {
95
- name: "foo",
96
- shortAlias: "f",
97
- type: ArgumentValueTypeName.STRING,
98
- },
99
- ],
100
- [],
101
- );
102
-
103
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
104
- command = getSubCommand(
105
- "command",
106
- [
107
- {
108
- name: "foo1",
109
- shortAlias: "f",
110
- type: ArgumentValueTypeName.STRING,
111
- },
112
- {
113
- name: "foo2",
114
- shortAlias: "f",
115
- type: ArgumentValueTypeName.STRING,
116
- },
117
- ],
118
- [],
119
- );
120
-
121
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
122
- });
123
-
124
- test("SubCommand validation fails due to boolean argument type not supporting allowable values", () => {
125
- const command = getSubCommand(
126
- "command",
127
- [
128
- {
129
- name: "foo",
130
- type: ArgumentValueTypeName.BOOLEAN,
131
- allowableValues: ["goo"],
132
- },
133
- ],
134
- [],
135
- );
136
-
137
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
138
- });
139
-
140
- test("SubCommand validation fails due to boolean argument type not supporting case sensitivity", () => {
141
- const command = getSubCommand(
142
- "command",
143
- [
144
- {
145
- name: "foo",
146
- type: ArgumentValueTypeName.BOOLEAN,
147
- isCaseInsensitive: true,
148
- },
149
- ],
150
- [],
151
- );
152
-
153
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
154
- });
155
-
156
- test("SubCommand validation fails due to number argument type not supporting case insensitivity", () => {
157
- const command = getSubCommand(
158
- "command",
159
- [
160
- {
161
- name: "foo",
162
- type: ArgumentValueTypeName.NUMBER,
163
- isCaseInsensitive: false,
164
- },
165
- ],
166
- [],
167
- );
168
-
169
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
170
- });
171
-
172
- test("SubCommand validation fails due to string argument type not supporting value range", () => {
173
- const command = getSubCommand(
174
- "command",
175
- [
176
- {
177
- name: "foo",
178
- type: ArgumentValueTypeName.STRING,
179
- minValueInclusive: 1,
180
- },
181
- ],
182
- [],
183
- );
184
-
185
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
186
- });
187
-
188
- test("SubCommand validation fails due to number argument type not supporting value range and allowable values", () => {
189
- const command = getSubCommand(
190
- "command",
191
- [
192
- {
193
- name: "foo",
194
- type: ArgumentValueTypeName.NUMBER,
195
- allowableValues: [1],
196
- minValueInclusive: 1,
197
- },
198
- ],
199
- [],
200
- );
201
-
202
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
203
- });
204
-
205
- test(
206
- "SubCommand validation fails due to option default value" +
207
- " not matching any values specified in argument valid values",
208
- () => {
209
- const command = getSubCommand(
210
- "command",
211
- [
212
- {
213
- name: "foo",
214
- type: ArgumentValueTypeName.STRING,
215
- defaultValue: "bar",
216
- allowableValues: ["goo"],
217
- },
218
- ],
219
- [],
220
- );
221
-
222
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
223
- },
224
- );
225
-
226
- test(
227
- "SubCommand validation fails due to option default value" +
228
- " not matching any values specified in argument valid values with case sensitivity",
229
- () => {
230
- const command = getSubCommand(
231
- "command",
232
- [
233
- {
234
- name: "foo",
235
- type: ArgumentValueTypeName.STRING,
236
- defaultValue: "bar",
237
- allowableValues: ["BAR"],
238
- },
239
- ],
240
- [],
241
- );
242
-
243
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
244
- },
245
- );
246
-
247
- test(
248
- "SubCommand validation successed with option default value" +
249
- " matching value specified in argument valid values with case insensitivity",
250
- () => {
251
- const command = getSubCommand(
252
- "command",
253
- [
254
- {
255
- name: "foo",
256
- type: ArgumentValueTypeName.STRING,
257
- defaultValue: "bar",
258
- allowableValues: ["BAR"],
259
- isCaseInsensitive: true,
260
- },
261
- ],
262
- [],
263
- );
264
-
265
- new CommandValidator(getCLIConfig()).validate(command);
266
- },
267
- );
268
-
269
- test(
270
- "SubCommand validation fails due to the type of option defaultValue" +
271
- " not matching the type specified in argument type",
272
- () => {
273
- const command = getSubCommand(
274
- "command",
275
- [
276
- {
277
- name: "foo",
278
- defaultValue: "bar",
279
- type: ArgumentValueTypeName.BOOLEAN,
280
- },
281
- ],
282
- [],
283
- );
284
-
285
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
286
- },
287
- );
288
-
289
- test(
290
- "SubCommand validation fails due to option defaultValue" +
291
- " being an array and option does not support array",
292
- () => {
293
- const command = getSubCommand(
294
- "command",
295
- [
296
- {
297
- name: "foo",
298
- defaultValue: ["bar1", "bar2"],
299
- type: ArgumentValueTypeName.STRING,
300
- },
301
- ],
302
- [],
303
- );
304
-
305
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
306
- },
307
- );
308
-
309
- test(
310
- "SubCommand validation fails due to the type of values in argument" +
311
- " allowableValues not matching the type specified in argument type",
312
- () => {
313
- const command = getSubCommand(
314
- "command",
315
- [
316
- {
317
- name: "foo",
318
- defaultValue: "bar",
319
- allowableValues: [1],
320
- type: ArgumentValueTypeName.STRING,
321
- },
322
- ],
323
- [],
324
- );
325
-
326
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
327
- },
328
- );
329
-
330
- test("SubCommand validation fails due to invalid command name", () => {
331
- const command = getSubCommand(
332
- "command",
333
- [
334
- {
335
- name: "-foo",
336
- type: ArgumentValueTypeName.STRING,
337
- },
338
- ],
339
- [],
340
- );
341
-
342
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
343
- });
344
-
345
- test("SubCommand validation fails due to invalid command short alias", () => {
346
- const command = getSubCommand(
347
- "command",
348
- [
349
- {
350
- name: "foo",
351
- shortAlias: "foo",
352
- type: ArgumentValueTypeName.STRING,
353
- },
354
- ],
355
- [],
356
- );
357
-
358
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
359
- });
360
-
361
- test("SubCommand validation fails due to non-last positional being varargs", () => {
362
- let command = getSubCommand(
363
- "command",
364
- [],
365
- [
366
- {
367
- name: "foo",
368
- isVarargMultiple: true,
369
- type: ArgumentValueTypeName.STRING,
370
- },
371
- {
372
- name: "goo",
373
- type: ArgumentValueTypeName.STRING,
374
- },
375
- ],
376
- );
377
-
378
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
379
- command = getSubCommand(
380
- "command",
381
- [],
382
- [
383
- {
384
- name: "foo",
385
- isVarargOptional: true,
386
- type: ArgumentValueTypeName.STRING,
387
- },
388
- {
389
- name: "goo",
390
- type: ArgumentValueTypeName.STRING,
391
- },
392
- ],
393
- );
394
-
395
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
396
- });
397
-
398
- test("SubCommand validation fails due to more than one positional being varargs", () => {
399
- let command = getSubCommand(
400
- "command",
401
- [],
402
- [
403
- {
404
- name: "foo",
405
- isVarargMultiple: true,
406
- type: ArgumentValueTypeName.STRING,
407
- },
408
- {
409
- name: "goo",
410
- isVarargMultiple: true,
411
- type: ArgumentValueTypeName.STRING,
412
- },
413
- ],
414
- );
415
-
416
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
417
- command = getSubCommand(
418
- "command",
419
- [],
420
- [
421
- {
422
- name: "foo",
423
- isVarargOptional: true,
424
- type: ArgumentValueTypeName.STRING,
425
- },
426
- {
427
- name: "goo",
428
- isVarargOptional: true,
429
- type: ArgumentValueTypeName.STRING,
430
- },
431
- ],
432
- );
433
-
434
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
435
- command = getSubCommand(
436
- "command",
437
- [],
438
- [
439
- {
440
- name: "foo",
441
- isVarargOptional: true,
442
- type: ArgumentValueTypeName.STRING,
443
- },
444
- {
445
- name: "goo",
446
- isVarargMultiple: true,
447
- type: ArgumentValueTypeName.STRING,
448
- },
449
- ],
450
- );
451
-
452
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
453
- command = getSubCommand(
454
- "command",
455
- [],
456
- [
457
- {
458
- name: "foo",
459
- isVarargMultiple: true,
460
- type: ArgumentValueTypeName.STRING,
461
- },
462
- {
463
- name: "goo",
464
- isVarargOptional: true,
465
- type: ArgumentValueTypeName.STRING,
466
- },
467
- ],
468
- );
469
-
470
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
471
- });
472
-
473
- test("SubCommand validation succeeds", () => {
474
- const command = getSubCommand(
475
- "command",
476
- [
477
- {
478
- name: "foo",
479
- defaultValue: "bar",
480
- allowableValues: ["bar", "gar"],
481
- shortAlias: "f",
482
- type: ArgumentValueTypeName.STRING,
483
- },
484
- ],
485
- [
486
- {
487
- name: "boo",
488
- type: ArgumentValueTypeName.NUMBER,
489
- isVarargMultiple: true,
490
- allowableValues: [1, 2],
491
- },
492
- ],
493
- );
494
-
495
- new CommandValidator(getCLIConfig()).validate(command);
496
- });
497
-
498
- test(
499
- "GlobalCommand validation fails due to the default value" +
500
- " not matching any values specified in argument valid values",
501
- () => {
502
- const command = getGlobalCommandWithShortAlias("command", "c", {
503
- type: ArgumentValueTypeName.STRING,
504
- defaultValue: "bar",
505
- allowableValues: ["goo"],
506
- });
507
-
508
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
509
- },
510
- );
511
-
512
- test(
513
- "GlobalCommand validation fails due to the type of defaultValue" +
514
- " not matching the type specified in global argument type",
515
- () => {
516
- const command = getGlobalCommandWithShortAlias("command", "c", {
517
- type: ArgumentValueTypeName.BOOLEAN,
518
- defaultValue: "bar",
519
- });
520
-
521
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
522
- },
523
- );
524
-
525
- test(
526
- "GlobalCommand validation fails due to the type of values in argument" +
527
- " allowableValues not matching the type specified in argument type",
528
- () => {
529
- const command = getGlobalCommandWithShortAlias("command", "c", {
530
- defaultValue: "bar",
531
- allowableValues: [1],
532
- type: ArgumentValueTypeName.STRING,
533
- });
534
-
535
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
536
- },
537
- );
538
-
539
- test("GlobalCommand validation fails due to invalid command name", () => {
540
- const command = getGlobalCommandWithShortAlias("-command", "c", {
541
- type: ArgumentValueTypeName.STRING,
542
- });
543
-
544
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
545
- });
546
-
547
- test("GlobalCommand validation fails due to invalid command short alias", () => {
548
- const command = getGlobalCommandWithShortAlias("command", "command", {
549
- type: ArgumentValueTypeName.STRING,
550
- });
551
-
552
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
553
- });
554
-
555
- test("GlobalCommand validation succeeds with global argument", () => {
556
- const command = getGlobalCommandWithShortAlias("command", "c", {
557
- defaultValue: "bar",
558
- allowableValues: ["bar", "gar"],
559
- type: ArgumentValueTypeName.STRING,
560
- });
561
-
562
- new CommandValidator(getCLIConfig()).validate(command);
563
- });
564
-
565
- test("GlobalCommand validation succeeds without global argument", () => {
566
- const command = getGlobalCommandWithShortAlias("command", "c");
567
-
568
- new CommandValidator(getCLIConfig()).validate(command);
569
- });
570
-
571
- test("GrouoCommand validation fails due to name and member duplicate names", () => {
572
- const command = getGroupCommand("command", [getSubCommand("command", [], [])]);
573
-
574
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
575
- });
576
-
577
- test("GrouoCommand validation fails due to duplicate member command names", () => {
578
- const command = getGroupCommand("group", [
579
- getSubCommand("command", [], []),
580
- getSubCommand("command", [], []),
581
- ]);
582
-
583
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
584
- });
585
-
586
- test("GrouoCommand validation fails due to invalid command name", () => {
587
- const command = getGroupCommand("-group", [getSubCommand("command", [], [])]);
588
-
589
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
590
- });
591
-
592
- test("GroupCommand validation succeeds", () => {
593
- const command = getGroupCommand("group", [
594
- getSubCommand("command1", [], []),
595
- getSubCommand(
596
- "command2",
597
- [
598
- {
599
- name: "foo",
600
- defaultValue: "bar",
601
- allowableValues: ["bar", "gar"],
602
- shortAlias: "f",
603
- type: ArgumentValueTypeName.STRING,
604
- },
605
- ],
606
- [
607
- {
608
- name: "boo",
609
- type: ArgumentValueTypeName.NUMBER,
610
- isVarargMultiple: true,
611
- allowableValues: [1, 2],
612
- },
613
- ],
614
- ),
615
- ]);
616
-
617
- new CommandValidator(getCLIConfig()).validate(command);
618
- });
619
-
620
- test("SubCommand validation succeeds", () => {
621
- new CommandValidator(getCLIConfig()).validate(getSubCommandWithComplexOptions(true));
622
- });
623
-
624
- test("SubCommand validation fails due to nested duplicate property paths", () => {
625
- const command = getSubCommand(
626
- "command",
627
- [
628
- {
629
- name: "alpha",
630
- shortAlias: "a",
631
- type: ComplexValueTypeName.COMPLEX,
632
- isArray: true,
633
- properties: [
634
- {
635
- name: "beta",
636
- shortAlias: "b",
637
- type: ComplexValueTypeName.COMPLEX,
638
- isArray: true,
639
- properties: [
640
- {
641
- name: "gamma",
642
- shortAlias: "g",
643
- type: ArgumentValueTypeName.STRING,
644
- },
645
- ],
646
- },
647
- ],
648
- },
649
- {
650
- name: "alpha",
651
- shortAlias: "a",
652
- type: ComplexValueTypeName.COMPLEX,
653
- isArray: true,
654
- properties: [
655
- {
656
- name: "beta",
657
- shortAlias: "b",
658
- type: ComplexValueTypeName.COMPLEX,
659
- isArray: true,
660
- properties: [
661
- {
662
- name: "gamma",
663
- shortAlias: "g",
664
- type: ArgumentValueTypeName.STRING,
665
- },
666
- ],
667
- },
668
- ],
669
- },
670
- ],
671
- [],
672
- );
673
-
674
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
675
- });
676
-
677
- test("SubCommand validation fails due to duplicate argument names or short aliases in sibling nested properties", () => {
678
- const command = getSubCommand(
679
- "command",
680
- [
681
- {
682
- name: "alpha",
683
- shortAlias: "a",
684
- type: ComplexValueTypeName.COMPLEX,
685
- isArray: true,
686
- properties: [
687
- {
688
- name: "beta",
689
- shortAlias: "b",
690
- type: ComplexValueTypeName.COMPLEX,
691
- isArray: true,
692
- properties: [
693
- {
694
- name: "gamma",
695
- shortAlias: "g",
696
- type: ArgumentValueTypeName.STRING,
697
- },
698
- ],
699
- },
700
- ],
701
- },
702
- {
703
- name: "a",
704
- type: ComplexValueTypeName.COMPLEX,
705
- isArray: true,
706
- properties: [
707
- {
708
- name: "b",
709
- type: ComplexValueTypeName.COMPLEX,
710
- isArray: true,
711
- properties: [
712
- {
713
- name: "g",
714
- type: ArgumentValueTypeName.STRING,
715
- },
716
- ],
717
- },
718
- ],
719
- },
720
- ],
721
- [],
722
- );
723
-
724
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
725
- });
726
-
727
- test(
728
- "SubCommand validation fails due to nested property option default value" +
729
- " not matching any values specified in argument valid values",
730
- () => {
731
- let command = getSubCommand(
732
- "command",
733
- [
734
- {
735
- name: "alpha",
736
- shortAlias: "a",
737
- type: ComplexValueTypeName.COMPLEX,
738
- isArray: true,
739
- properties: [
740
- {
741
- name: "beta",
742
- shortAlias: "b",
743
- type: ComplexValueTypeName.COMPLEX,
744
- isArray: true,
745
- properties: [
746
- {
747
- name: "gamma",
748
- shortAlias: "g",
749
- type: ArgumentValueTypeName.STRING,
750
- allowableValues: ["foo"],
751
- defaultValue: "bar",
752
- },
753
- ],
754
- },
755
- ],
756
- },
757
- ],
758
- [],
759
- );
760
-
761
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
762
-
763
- command = getSubCommand(
764
- "command",
765
- [
766
- {
767
- name: "alpha",
768
- shortAlias: "a",
769
- type: ComplexValueTypeName.COMPLEX,
770
- isArray: true,
771
- properties: [
772
- {
773
- name: "beta",
774
- shortAlias: "b",
775
- type: ComplexValueTypeName.COMPLEX,
776
- isArray: true,
777
- properties: [
778
- {
779
- name: "gamma",
780
- shortAlias: "g",
781
- type: ArgumentValueTypeName.STRING,
782
- allowableValues: ["foo", "bar"],
783
- defaultValue: "bar",
784
- },
785
- ],
786
- },
787
- ],
788
- },
789
- ],
790
- [],
791
- );
792
- new CommandValidator(getCLIConfig()).validate(command);
793
- },
794
- );
795
-
796
- test(
797
- "SubCommand validation fails due to the type of nested property complex option defaultValue" +
798
- " not matching the type specified in argument type",
799
- () => {
800
- const command = getSubCommand(
801
- "command",
802
- [
803
- {
804
- name: "alpha",
805
- shortAlias: "a",
806
- type: ComplexValueTypeName.COMPLEX,
807
- isArray: true,
808
- properties: [
809
- {
810
- name: "beta",
811
- shortAlias: "b",
812
- type: ComplexValueTypeName.COMPLEX,
813
- isArray: true,
814
- properties: [
815
- {
816
- name: "gamma",
817
- shortAlias: "g",
818
- type: ArgumentValueTypeName.BOOLEAN,
819
- defaultValue: 1,
820
- },
821
- ],
822
- },
823
- ],
824
- },
825
- ],
826
- [],
827
- );
828
-
829
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
830
- },
831
- );
832
-
833
- test(
834
- "SubCommand validation fails due to nested property complex option defaultValue" +
835
- " being an array and option does not support array",
836
- () => {
837
- const command = getSubCommand(
838
- "command",
839
- [
840
- {
841
- name: "alpha",
842
- shortAlias: "a",
843
- type: ComplexValueTypeName.COMPLEX,
844
- isArray: true,
845
- properties: [
846
- {
847
- name: "beta",
848
- shortAlias: "b",
849
- type: ComplexValueTypeName.COMPLEX,
850
- isArray: true,
851
- properties: [
852
- {
853
- name: "gamma",
854
- shortAlias: "g",
855
- type: ArgumentValueTypeName.STRING,
856
- defaultValue: ["foo", "bar"],
857
- },
858
- ],
859
- },
860
- ],
861
- },
862
- ],
863
- [],
864
- );
865
-
866
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
867
- },
868
- );
869
-
870
- test(
871
- "SubCommand validation fails due to the type of nested property values in complex option" +
872
- " allowableValues not matching the type specified in argument type",
873
- () => {
874
- let command = getSubCommand(
875
- "command",
876
- [
877
- {
878
- name: "alpha",
879
- type: ComplexValueTypeName.COMPLEX,
880
- isArray: true,
881
- defaultValue: [
882
- {
883
- beta: 1,
884
- },
885
- ],
886
- properties: [
887
- {
888
- name: "beta",
889
- type: ComplexValueTypeName.COMPLEX,
890
- properties: [
891
- {
892
- name: "gamma",
893
- type: ArgumentValueTypeName.BOOLEAN,
894
- },
895
- ],
896
- },
897
- ],
898
- },
899
- ],
900
- [],
901
- );
902
-
903
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
904
-
905
- command = getSubCommand(
906
- "command",
907
- [
908
- {
909
- name: "alpha",
910
- type: ComplexValueTypeName.COMPLEX,
911
- isArray: true,
912
- defaultValue: [
913
- {
914
- beta: {
915
- gamma: 1,
916
- },
917
- },
918
- ],
919
- properties: [
920
- {
921
- name: "beta",
922
- type: ComplexValueTypeName.COMPLEX,
923
- properties: [
924
- {
925
- name: "gamma",
926
- type: ArgumentValueTypeName.BOOLEAN,
927
- },
928
- ],
929
- },
930
- ],
931
- },
932
- ],
933
- [],
934
- );
935
-
936
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
937
-
938
- command = getSubCommand(
939
- "command",
940
- [
941
- {
942
- name: "alpha",
943
- type: ComplexValueTypeName.COMPLEX,
944
- isArray: true,
945
- defaultValue: [
946
- {
947
- beta: {
948
- gamma: "foo",
949
- },
950
- },
951
- ],
952
- properties: [
953
- {
954
- name: "beta",
955
- type: ComplexValueTypeName.COMPLEX,
956
- properties: [
957
- {
958
- name: "gamma",
959
- type: ArgumentValueTypeName.STRING,
960
- },
961
- ],
962
- },
963
- ],
964
- },
965
- ],
966
- [],
967
- );
968
-
969
- new CommandValidator(getCLIConfig()).validate(command);
970
- },
971
- );
972
-
973
- test("SubCommand validation fails due to invalid complex option property name", () => {
974
- let command = getSubCommand(
975
- "command",
976
- [
977
- {
978
- name: "alpha",
979
- type: ComplexValueTypeName.COMPLEX,
980
- isArray: true,
981
- properties: [
982
- {
983
- name: "-beta",
984
- type: ComplexValueTypeName.COMPLEX,
985
- properties: [
986
- {
987
- name: "gamma",
988
- type: ArgumentValueTypeName.STRING,
989
- },
990
- ],
991
- },
992
- ],
993
- },
994
- ],
995
- [],
996
- );
997
-
998
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
999
- command = getSubCommand(
1000
- "command",
1001
- [
1002
- {
1003
- name: "alpha",
1004
- type: ComplexValueTypeName.COMPLEX,
1005
- isArray: true,
1006
- properties: [
1007
- {
1008
- name: "beta",
1009
- type: ComplexValueTypeName.COMPLEX,
1010
- properties: [
1011
- {
1012
- name: "gamma",
1013
- type: ArgumentValueTypeName.STRING,
1014
- },
1015
- ],
1016
- },
1017
- ],
1018
- },
1019
- ],
1020
- [],
1021
- );
1022
-
1023
- new CommandValidator(getCLIConfig()).validate(command);
1024
- });
1025
-
1026
- test("SubCommand validation fails due to invalid complex option property short alias", () => {
1027
- let command = getSubCommand(
1028
- "command",
1029
- [
1030
- {
1031
- name: "alpha",
1032
- type: ComplexValueTypeName.COMPLEX,
1033
- isArray: true,
1034
- properties: [
1035
- {
1036
- name: "beta",
1037
- shortAlias: "-",
1038
- type: ComplexValueTypeName.COMPLEX,
1039
- properties: [
1040
- {
1041
- name: "gamma",
1042
- type: ArgumentValueTypeName.STRING,
1043
- },
1044
- ],
1045
- },
1046
- ],
1047
- },
1048
- ],
1049
- [],
1050
- );
1051
-
1052
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrow();
1053
-
1054
- command = getSubCommand(
1055
- "command",
1056
- [
1057
- {
1058
- name: "alpha",
1059
- type: ComplexValueTypeName.COMPLEX,
1060
- isArray: true,
1061
- properties: [
1062
- {
1063
- name: "beta",
1064
- shortAlias: "b",
1065
- type: ComplexValueTypeName.COMPLEX,
1066
- properties: [
1067
- {
1068
- name: "gamma",
1069
- type: ArgumentValueTypeName.STRING,
1070
- },
1071
- ],
1072
- },
1073
- ],
1074
- },
1075
- ],
1076
- [],
1077
- );
1078
-
1079
- new CommandValidator(getCLIConfig()).validate(command);
1080
- });
1081
-
1082
- test("SubCommand validation fails due to custom configuration key when not enabled", () => {
1083
- let command = getSubCommand(
1084
- "command",
1085
- [
1086
- {
1087
- name: "foo",
1088
- type: ArgumentValueTypeName.STRING,
1089
- configurationKey: "FOO_BAR",
1090
- },
1091
- ],
1092
- [],
1093
- );
1094
-
1095
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrowError(
1096
- "Command: 'command' enableConfiguration is false, but an argument defines a configurationKey: 'FOO_BAR'",
1097
- );
1098
-
1099
- command = getSubCommand(
1100
- "command",
1101
- [
1102
- {
1103
- name: "foo",
1104
- type: ArgumentValueTypeName.STRING,
1105
- configurationKey: "FOO_BAR",
1106
- },
1107
- ],
1108
- [],
1109
- true,
1110
- );
1111
-
1112
- new CommandValidator(getCLIConfig()).validate(command);
1113
- });
1114
-
1115
- test("SubCommand validation fails due to duplicate custom configuration key", () => {
1116
- let command = getSubCommand(
1117
- "command",
1118
- [
1119
- {
1120
- name: "foo1",
1121
- type: ArgumentValueTypeName.STRING,
1122
- configurationKey: "FOO_BAR",
1123
- },
1124
- ],
1125
- [
1126
- {
1127
- name: "foo2",
1128
- type: ArgumentValueTypeName.STRING,
1129
- configurationKey: "FOO_BAR",
1130
- },
1131
- ],
1132
- true,
1133
- );
1134
-
1135
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrowError(
1136
- "Command: 'command' contains arguments with the same configuration key: 'FOO_BAR'",
1137
- );
1138
-
1139
- command = getSubCommand(
1140
- "command",
1141
- [
1142
- {
1143
- name: "foo1",
1144
- type: ArgumentValueTypeName.STRING,
1145
- configurationKey: "FOO_BAR_1",
1146
- },
1147
- ],
1148
- [
1149
- {
1150
- name: "foo2",
1151
- type: ArgumentValueTypeName.STRING,
1152
- configurationKey: "FOO_BAR_2",
1153
- },
1154
- ],
1155
- true,
1156
- );
1157
-
1158
- new CommandValidator(getCLIConfig()).validate(command);
1159
- });
1160
-
1161
- test("SubCommand validation fails due to invalid configuration key", () => {
1162
- let command = getSubCommand(
1163
- "command",
1164
- [
1165
- {
1166
- name: "foo1",
1167
- type: ArgumentValueTypeName.STRING,
1168
- configurationKey: "-FOO_BAR",
1169
- },
1170
- ],
1171
- [],
1172
- true,
1173
- );
1174
-
1175
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrowError(
1176
- "Illegal configuration key: '-FOO_BAR'",
1177
- );
1178
-
1179
- command = getSubCommand(
1180
- "command",
1181
- [
1182
- {
1183
- name: "foo1",
1184
- type: ArgumentValueTypeName.STRING,
1185
- configurationKey: "3_FOO_BAR_1",
1186
- },
1187
- ],
1188
- [],
1189
- true,
1190
- );
1191
-
1192
- expect(() => new CommandValidator(getCLIConfig()).validate(command)).toThrowError(
1193
- "Illegal configuration key: '3_FOO_BAR_1'",
1194
- );
1195
- });
1196
- });