@flowscripter/dynamic-cli-framework 1.2.2 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README/core-service-providers.md +2 -2
- package/README/development.md +3 -6
- package/README/implementation-details.md +17 -17
- package/README/key-concepts.md +17 -17
- package/README.md +4 -4
- package/bun.lock +0 -2
- package/index.ts +22 -30
- package/package.json +19 -19
- package/src/api/argument/Argument.ts +1 -1
- package/src/api/argument/ArgumentValueTypes.ts +3 -10
- package/src/api/argument/ComplexOption.ts +5 -9
- package/src/api/command/GlobalCommand.ts +1 -4
- package/src/api/service/core/ArgumentPrompterService.ts +1 -3
- package/src/api/service/core/AsciiBannerGeneratorService.ts +1 -4
- package/src/api/service/core/CompletionService.ts +2 -6
- package/src/api/service/core/ImagePrinterService.ts +1 -2
- package/src/api/service/core/KeyValueService.ts +1 -2
- package/src/api/service/core/PrettyPrinterService.ts +1 -4
- package/src/api/service/core/PrinterService.ts +8 -9
- package/src/api/service/core/PrompterService.ts +4 -11
- package/src/api/service/core/ShutdownService.ts +1 -2
- package/src/api/service/core/SyntaxHighlighterService.ts +1 -5
- package/src/api/service/core/Table.ts +7 -25
- package/src/api/service/core/TreePrinterService.ts +1 -2
- package/src/cli/BaseCLI.ts +17 -47
- package/src/cli/DefaultRuntimeCLI.ts +1 -4
- package/src/command/CompletionCommand.ts +19 -45
- package/src/command/MultiCommandCliHelpCommand.ts +45 -92
- package/src/command/SingleCommandCliHelpCommand.ts +17 -28
- package/src/command/UsageCommand.ts +6 -12
- package/src/command/VersionCommand.ts +2 -6
- package/src/launcher.ts +4 -2
- package/src/runtime/DefaultContext.ts +2 -5
- package/src/runtime/argument/ArgumentTypeGuards.ts +1 -3
- package/src/runtime/command/CommandTypeGuards.ts +5 -14
- package/src/runtime/command/CommandValidator.ts +56 -118
- package/src/runtime/parser.ts +13 -17
- package/src/runtime/registry/CommandRegistry.ts +2 -7
- package/src/runtime/registry/DefaultCommandRegistry.ts +32 -84
- package/src/runtime/registry/DefaultServiceProviderRegistry.ts +3 -9
- package/src/runtime/runner.ts +103 -142
- package/src/runtime/scanner.ts +28 -46
- package/src/runtime/values/ValuePopulationResult.ts +1 -2
- package/src/runtime/values/argumentValueMerge.ts +16 -28
- package/src/runtime/values/argumentValueValidation.ts +21 -67
- package/src/runtime/values/globalCommandValuePopulation.ts +9 -18
- package/src/runtime/values/subCommandValuePopulation.ts +42 -65
- package/src/service/argumentPrompter/ArgumentPrompterServiceProvider.ts +3 -10
- package/src/service/argumentPrompter/DefaultArgumentPrompterService.ts +22 -59
- package/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.ts +5 -14
- package/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.ts +59 -77
- package/src/service/banner/BannerServiceProvider.ts +13 -35
- package/src/service/banner/command/NoBannerCommand.ts +2 -8
- package/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.ts +5 -10
- package/src/service/completion/CompletionServiceProvider.ts +20 -48
- package/src/service/completion/DefaultCompletionService.ts +17 -56
- package/src/service/completion/shell/ShellHandler.ts +1 -3
- package/src/service/completion/shell/fish.ts +1 -1
- package/src/service/completion/shell/powershell.ts +2 -12
- package/src/service/completion/shell/zsh.ts +1 -1
- package/src/service/configuration/ConfigurationServiceProvider.ts +40 -133
- package/src/service/configuration/DefaultKeyValueService.ts +6 -20
- package/src/service/configuration/DefaultSecretService.ts +10 -14
- package/src/service/configuration/command/ConfigCommand.ts +1 -4
- package/src/service/configuration/command/DumpConfigCommand.ts +9 -21
- package/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.ts +5 -14
- package/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.ts +5 -12
- package/src/service/imagePrinter/DefaultImagePrinterService.ts +1 -5
- package/src/service/imagePrinter/ImagePrinterServiceProvider.ts +1 -4
- package/src/service/prettyPrinter/DefaultPrettyPrinterService.ts +4 -12
- package/src/service/prettyPrinter/PrettyPrinterServiceProvider.ts +3 -10
- package/src/service/printer/DefaultPrinterService.ts +20 -83
- package/src/service/printer/PrinterServiceProvider.ts +3 -11
- package/src/service/printer/command/DarkModeCommand.ts +3 -10
- package/src/service/printer/command/LogLevelCommand.ts +7 -26
- package/src/service/printer/command/NoColorCommand.ts +3 -10
- package/src/service/printer/command/NoHyperlinksCommand.ts +3 -10
- package/src/service/printer/terminal/Progress.ts +99 -90
- package/src/service/printer/terminal/Spinner.ts +7 -26
- package/src/service/prompter/DefaultPrompterService.ts +2 -6
- package/src/service/prompter/PrompterServiceProvider.ts +3 -11
- package/src/service/prompter/command/NoPromptCommand.ts +3 -10
- package/src/service/prompter/prompt/PromptContext.ts +5 -18
- package/src/service/prompter/prompt/promptMultiSelect.ts +6 -21
- package/src/service/prompter/prompt/promptOpenUrl.ts +7 -22
- package/src/service/prompter/prompt/promptSingleSelect.ts +6 -23
- package/src/service/prompter/prompt/promptText.ts +10 -27
- package/src/service/prompter/prompt/promptToggle.ts +8 -8
- package/src/service/shutdown/ShutdownServiceProvider.ts +3 -10
- package/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.ts +13 -26
- package/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.ts +8 -21
- package/src/service/tableGenerator/DefaultTableGeneratorService.ts +44 -68
- package/src/service/tableGenerator/TableGeneratorServiceProvider.ts +7 -16
- package/src/service/treePrinter/DefaultTreePrinterService.ts +2 -7
- package/src/service/treePrinter/TreePrinterServiceProvider.ts +4 -12
- package/src/terminal/ImageRenderer.ts +35 -54
- package/src/terminal/PngDecoder.ts +10 -19
- package/src/terminal/TtyStyler.ts +11 -9
- package/src/terminal/TtyTerminal.ts +2 -10
- package/src/terminal/supportsHyperlinks.ts +4 -10
- package/src/util/configHelper.ts +3 -10
- package/src/util/envVarHelper.ts +50 -88
- package/src/util/helpHelper.ts +123 -193
- package/src/util/logger.ts +12 -42
- package/src/util/runnerHelper.ts +20 -61
- package/tests/cli/BaseCLI.test.ts +23 -80
- package/tests/command/CompletionCommand.test.ts +1 -6
- package/tests/command/MultiCommandCliHelpCommand.test.ts +51 -205
- package/tests/command/SingleCommandCliHelpCommand.test.ts +21 -103
- package/tests/command/UsageCommand.test.ts +4 -10
- package/tests/fixtures/Command.ts +87 -68
- package/tests/fixtures/CommandRegistry.ts +1 -3
- package/tests/fixtures/Context.ts +3 -11
- package/tests/fixtures/ServiceProviderRegistry.ts +1 -1
- package/tests/fixtures/prettierPluginFoo.ts +1 -1
- package/tests/fixtures/util.ts +2 -8
- package/tests/runtime/argument/ArgumentTypeGuards.test.ts +1 -3
- package/tests/runtime/command/CommandValidator.test.ts +881 -604
- package/tests/runtime/parser.test.ts +222 -246
- package/tests/runtime/registry/DefaultCommandRegistry.test.ts +15 -37
- package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +2 -8
- package/tests/runtime/runner.test.ts +231 -281
- package/tests/runtime/scanner.test.ts +277 -475
- package/tests/runtime/values/argumentValueMerge.test.ts +133 -81
- package/tests/runtime/values/argumentValueValidation.test.ts +444 -588
- package/tests/runtime/values/globalCommandValuePopulation.test.ts +71 -253
- package/tests/runtime/values/subCommandValuePopulation.test.ts +1342 -1570
- package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +3 -12
- package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +36 -45
- package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +2 -8
- package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +40 -62
- package/tests/service/banner/BannerServiceProvider.test.ts +5 -18
- package/tests/service/banner/command/NoBannerCommand.test.ts +1 -4
- package/tests/service/completion/CompletionServiceProvider.test.ts +145 -214
- package/tests/service/completion/DefaultCompletionService.test.ts +17 -79
- package/tests/service/completion/shell/fish.test.ts +1 -3
- package/tests/service/configuration/ConfigurationServiceProvider.test.ts +26 -75
- package/tests/service/configuration/DefaultKeyValueService.test.ts +9 -21
- package/tests/service/configuration/DefaultSecretService.test.ts +7 -15
- package/tests/service/configuration/command/DumpConfigCommand.test.ts +4 -13
- package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +6 -12
- package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +1 -10
- package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +5 -70
- package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +4 -11
- package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +2 -6
- package/tests/service/printer/DefaultPrinterService.test.ts +57 -255
- package/tests/service/printer/PrinterServiceProvider.test.ts +2 -8
- package/tests/service/printer/command/DarkModeCommand.test.ts +4 -12
- package/tests/service/printer/command/LogLevelCommand.test.ts +4 -17
- package/tests/service/printer/command/NoColorCommand.test.ts +4 -12
- package/tests/service/printer/command/NoHyperlinksCommand.test.ts +7 -21
- package/tests/service/printer/terminal/Progress.test.ts +1 -3
- package/tests/service/printer/terminal/Spinner.test.ts +2 -8
- package/tests/service/prompter/DefaultPrompterService.test.ts +52 -69
- package/tests/service/prompter/PrompterServiceProvider.test.ts +2 -8
- package/tests/service/shutdown/ShutdownServiceProvider.test.ts +1 -3
- package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +13 -99
- package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +2 -7
- package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +12 -33
- package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +2 -2
- package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +4 -6
- package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +4 -8
- package/tests/terminal/ImageRenderer.test.ts +2 -11
- package/tests/terminal/PngDecoder.test.ts +2 -6
- package/tests/util/configHelper.test.ts +55 -137
- package/tests/util/envVarHelper.test.ts +46 -110
|
@@ -10,11 +10,7 @@ import type SubCommand from "../../../src/api/command/SubCommand.ts";
|
|
|
10
10
|
import type Positional from "../../../src/api/argument/Positional.ts";
|
|
11
11
|
import type Option from "../../../src/api/argument/Option.ts";
|
|
12
12
|
|
|
13
|
-
function getSubCommand(
|
|
14
|
-
name: string,
|
|
15
|
-
options: Option[],
|
|
16
|
-
positionals: Positional[],
|
|
17
|
-
): SubCommand {
|
|
13
|
+
function getSubCommand(name: string, options: Option[], positionals: Positional[]): SubCommand {
|
|
18
14
|
return {
|
|
19
15
|
name,
|
|
20
16
|
options,
|
|
@@ -88,53 +84,36 @@ describe("DefaultCommandRegistry tests", () => {
|
|
|
88
84
|
commandRegistry.addCommand(globalModifierCommand3, service1Id);
|
|
89
85
|
commandRegistry.addCommand(globalModifierCommand4, service2Id);
|
|
90
86
|
|
|
91
|
-
expect(
|
|
92
|
-
|
|
93
|
-
).toEqual(
|
|
94
|
-
subCommand2.name,
|
|
95
|
-
);
|
|
96
|
-
expect(
|
|
97
|
-
commandRegistry.getGroupCommandByName(groupCommand2.name)!.name,
|
|
98
|
-
).toEqual(
|
|
87
|
+
expect(commandRegistry.getSubCommandByName(subCommand2.name)!.name).toEqual(subCommand2.name);
|
|
88
|
+
expect(commandRegistry.getGroupCommandByName(groupCommand2.name)!.name).toEqual(
|
|
99
89
|
groupCommand2.name,
|
|
100
90
|
);
|
|
101
|
-
expect(
|
|
102
|
-
commandRegistry.getGlobalCommandByName(globalCommand2.name)!.name,
|
|
103
|
-
).toEqual(
|
|
91
|
+
expect(commandRegistry.getGlobalCommandByName(globalCommand2.name)!.name).toEqual(
|
|
104
92
|
globalCommand2.name,
|
|
105
93
|
);
|
|
106
94
|
expect(
|
|
107
|
-
commandRegistry.getGlobalModifierCommandByName(
|
|
108
|
-
|
|
109
|
-
)!.name,
|
|
110
|
-
).toEqual(
|
|
111
|
-
globalModifierCommand2.name,
|
|
112
|
-
);
|
|
95
|
+
commandRegistry.getGlobalModifierCommandByName(globalModifierCommand2.name)!.name,
|
|
96
|
+
).toEqual(globalModifierCommand2.name);
|
|
113
97
|
|
|
114
|
-
const result1 = commandRegistry
|
|
115
|
-
.
|
|
116
|
-
|
|
117
|
-
);
|
|
98
|
+
const result1 = commandRegistry.getGroupCommandAndMemberSubCommandByJoinedName(
|
|
99
|
+
`${groupCommand2.name}:${memberSubCommand2.name}`,
|
|
100
|
+
);
|
|
118
101
|
|
|
119
102
|
expect(result1!.groupCommand.name).toEqual(groupCommand2.name);
|
|
120
103
|
expect(result1!.command.name).toEqual(memberSubCommand2.name);
|
|
121
104
|
|
|
122
105
|
const result2 = commandRegistry.getGroupAndMemberCommandsByJoinedName();
|
|
123
|
-
const result3 = result2!.get(
|
|
124
|
-
`${groupCommand2.name}:${memberSubCommand2.name}`,
|
|
125
|
-
);
|
|
106
|
+
const result3 = result2!.get(`${groupCommand2.name}:${memberSubCommand2.name}`);
|
|
126
107
|
|
|
127
108
|
expect(result3!.groupCommand.name).toEqual(groupCommand2.name);
|
|
128
109
|
expect(result3!.command.name).toEqual(memberSubCommand2.name);
|
|
129
110
|
|
|
130
|
-
const result4 = commandRegistry
|
|
131
|
-
.getGlobalModifierCommandsByNameNotProvidedByService();
|
|
111
|
+
const result4 = commandRegistry.getGlobalModifierCommandsByNameNotProvidedByService();
|
|
132
112
|
const result5 = result4!.get(globalModifierCommand2.name);
|
|
133
113
|
|
|
134
114
|
expect(result5!.name).toEqual(globalModifierCommand2.name);
|
|
135
115
|
|
|
136
|
-
const result6 = commandRegistry
|
|
137
|
-
.getGlobalModifierCommandsByShortAliasNotProvidedByService();
|
|
116
|
+
const result6 = commandRegistry.getGlobalModifierCommandsByShortAliasNotProvidedByService();
|
|
138
117
|
const result7 = result6!.get(globalModifierCommand2.shortAlias!);
|
|
139
118
|
|
|
140
119
|
expect(result7!.name).toEqual(globalModifierCommand2.name);
|
|
@@ -151,14 +130,13 @@ describe("DefaultCommandRegistry tests", () => {
|
|
|
151
130
|
expect(result11!.name).toEqual(subCommand2.name);
|
|
152
131
|
expect(result12!.name).toEqual(globalCommand2.name);
|
|
153
132
|
|
|
154
|
-
const result13 = commandRegistry
|
|
155
|
-
.getGlobalModifierCommandsByNameProvidedByService(service1Id);
|
|
133
|
+
const result13 = commandRegistry.getGlobalModifierCommandsByNameProvidedByService(service1Id);
|
|
156
134
|
const result14 = result13!.get(globalModifierCommand3.name);
|
|
157
135
|
|
|
158
136
|
expect(result14!.name).toEqual(globalModifierCommand3.name);
|
|
159
137
|
|
|
160
|
-
const result15 =
|
|
161
|
-
.getGlobalModifierCommandsByShortAliasProvidedByService(service2Id);
|
|
138
|
+
const result15 =
|
|
139
|
+
commandRegistry.getGlobalModifierCommandsByShortAliasProvidedByService(service2Id);
|
|
162
140
|
const result16 = result15!.get(globalModifierCommand4.shortAlias!);
|
|
163
141
|
|
|
164
142
|
expect(result16!.name).toEqual(globalModifierCommand4.name);
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { describe, expect, test } from "bun:test";
|
|
2
|
-
import type {
|
|
3
|
-
ServiceInfo,
|
|
4
|
-
ServiceProvider,
|
|
5
|
-
} from "../../../src/api/service/ServiceProvider.ts";
|
|
2
|
+
import type { ServiceInfo, ServiceProvider } from "../../../src/api/service/ServiceProvider.ts";
|
|
6
3
|
import DefaultServiceProviderRegistry from "../../../src/runtime/registry/DefaultServiceProviderRegistry.ts";
|
|
7
4
|
import type Context from "../../../src/api/Context.ts";
|
|
8
5
|
import type CLIConfig from "../../../src/api/CLIConfig.ts";
|
|
9
6
|
|
|
10
|
-
function getServiceProvider(
|
|
11
|
-
serviceId: string,
|
|
12
|
-
servicePriority: number,
|
|
13
|
-
): ServiceProvider {
|
|
7
|
+
function getServiceProvider(serviceId: string, servicePriority: number): ServiceProvider {
|
|
14
8
|
return {
|
|
15
9
|
serviceId,
|
|
16
10
|
servicePriority,
|