@flowscripter/dynamic-cli-framework 1.2.2 → 1.3.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.
- 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
|
@@ -20,33 +20,19 @@ describe("configHelper tests", () => {
|
|
|
20
20
|
let command = getGlobalCommand("blah", true);
|
|
21
21
|
|
|
22
22
|
expect(
|
|
23
|
-
getGlobalCommandArgumentConfigurationKey(
|
|
24
|
-
getCLIConfig(),
|
|
25
|
-
command,
|
|
26
|
-
command.argument!,
|
|
27
|
-
),
|
|
23
|
+
getGlobalCommandArgumentConfigurationKey(getCLIConfig(), command, command.argument!),
|
|
28
24
|
).toBeUndefined();
|
|
29
25
|
|
|
30
26
|
command = getGlobalCommand("blah", true, false, true);
|
|
31
27
|
|
|
32
28
|
expect(
|
|
33
|
-
getGlobalCommandArgumentConfigurationKey(
|
|
34
|
-
|
|
35
|
-
command,
|
|
36
|
-
command.argument!,
|
|
37
|
-
),
|
|
38
|
-
).toEqual(
|
|
39
|
-
"FOO_BLAH",
|
|
40
|
-
);
|
|
29
|
+
getGlobalCommandArgumentConfigurationKey(getCLIConfig(), command, command.argument!),
|
|
30
|
+
).toEqual("FOO_BLAH");
|
|
41
31
|
|
|
42
32
|
command = getGlobalCommand("blah", true, false, true, "FOO_BAR");
|
|
43
33
|
|
|
44
34
|
expect(
|
|
45
|
-
getGlobalCommandArgumentConfigurationKey(
|
|
46
|
-
getCLIConfig(),
|
|
47
|
-
command,
|
|
48
|
-
command.argument!,
|
|
49
|
-
),
|
|
35
|
+
getGlobalCommandArgumentConfigurationKey(getCLIConfig(), command, command.argument!),
|
|
50
36
|
"FOO_BAR",
|
|
51
37
|
);
|
|
52
38
|
});
|
|
@@ -55,42 +41,20 @@ describe("configHelper tests", () => {
|
|
|
55
41
|
let command = getSubCommandWithPositional("blah", true, true);
|
|
56
42
|
|
|
57
43
|
expect(
|
|
58
|
-
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
59
|
-
command.positionals![0]!,
|
|
60
|
-
]),
|
|
44
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [command.positionals![0]!]),
|
|
61
45
|
).toBeUndefined();
|
|
62
46
|
|
|
63
|
-
command = getSubCommandWithPositional(
|
|
64
|
-
"blah",
|
|
65
|
-
true,
|
|
66
|
-
false,
|
|
67
|
-
ArgumentValueTypeName.BOOLEAN,
|
|
68
|
-
true,
|
|
69
|
-
);
|
|
47
|
+
command = getSubCommandWithPositional("blah", true, false, ArgumentValueTypeName.BOOLEAN, true);
|
|
70
48
|
|
|
71
49
|
expect(
|
|
72
|
-
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
73
|
-
|
|
74
|
-
]),
|
|
75
|
-
).toEqual(
|
|
76
|
-
"FOO_BLAH_FOO",
|
|
77
|
-
);
|
|
50
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [command.positionals![0]!]),
|
|
51
|
+
).toEqual("FOO_BLAH_FOO");
|
|
78
52
|
|
|
79
|
-
command = getSubCommandWithPositional(
|
|
80
|
-
"blah",
|
|
81
|
-
true,
|
|
82
|
-
true,
|
|
83
|
-
ArgumentValueTypeName.BOOLEAN,
|
|
84
|
-
true,
|
|
85
|
-
);
|
|
53
|
+
command = getSubCommandWithPositional("blah", true, true, ArgumentValueTypeName.BOOLEAN, true);
|
|
86
54
|
|
|
87
55
|
expect(
|
|
88
|
-
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
89
|
-
|
|
90
|
-
]),
|
|
91
|
-
).toEqual(
|
|
92
|
-
"FOO_BLAH_FOO[_<index>]",
|
|
93
|
-
);
|
|
56
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [command.positionals![0]!]),
|
|
57
|
+
).toEqual("FOO_BLAH_FOO[_<index>]");
|
|
94
58
|
|
|
95
59
|
command = getSubCommandWithPositional(
|
|
96
60
|
"blah",
|
|
@@ -102,23 +66,17 @@ describe("configHelper tests", () => {
|
|
|
102
66
|
);
|
|
103
67
|
|
|
104
68
|
expect(
|
|
105
|
-
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
106
|
-
|
|
107
|
-
]),
|
|
108
|
-
).toEqual(
|
|
109
|
-
"FOO_BAR[_<index>]",
|
|
110
|
-
);
|
|
69
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [command.positionals![0]!]),
|
|
70
|
+
).toEqual("FOO_BAR[_<index>]");
|
|
111
71
|
});
|
|
112
72
|
|
|
113
73
|
test("getConfigurationKey works for simple option argument", () => {
|
|
114
74
|
let command = getSubCommandWithOption("blah", true, false, true);
|
|
115
75
|
|
|
116
76
|
expect(
|
|
117
|
-
getSubCommandArgumentConfigurationKey(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
[command.options![0] as Option],
|
|
121
|
-
),
|
|
77
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
78
|
+
command.options![0] as Option,
|
|
79
|
+
]),
|
|
122
80
|
).toBeUndefined();
|
|
123
81
|
|
|
124
82
|
command = getSubCommandWithOption(
|
|
@@ -132,14 +90,10 @@ describe("configHelper tests", () => {
|
|
|
132
90
|
);
|
|
133
91
|
|
|
134
92
|
expect(
|
|
135
|
-
getSubCommandArgumentConfigurationKey(
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
),
|
|
140
|
-
).toEqual(
|
|
141
|
-
"FOO_BLAH_FOO",
|
|
142
|
-
);
|
|
93
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
94
|
+
command.options![0] as Option,
|
|
95
|
+
]),
|
|
96
|
+
).toEqual("FOO_BLAH_FOO");
|
|
143
97
|
|
|
144
98
|
command = getSubCommandWithOption(
|
|
145
99
|
"blah",
|
|
@@ -152,14 +106,10 @@ describe("configHelper tests", () => {
|
|
|
152
106
|
);
|
|
153
107
|
|
|
154
108
|
expect(
|
|
155
|
-
getSubCommandArgumentConfigurationKey(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
),
|
|
160
|
-
).toEqual(
|
|
161
|
-
"FOO_BLAH_FOO[_<index>]",
|
|
162
|
-
);
|
|
109
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
110
|
+
command.options![0] as Option,
|
|
111
|
+
]),
|
|
112
|
+
).toEqual("FOO_BLAH_FOO[_<index>]");
|
|
163
113
|
|
|
164
114
|
command = getSubCommandWithOption(
|
|
165
115
|
"blah",
|
|
@@ -173,14 +123,10 @@ describe("configHelper tests", () => {
|
|
|
173
123
|
);
|
|
174
124
|
|
|
175
125
|
expect(
|
|
176
|
-
getSubCommandArgumentConfigurationKey(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
),
|
|
181
|
-
).toEqual(
|
|
182
|
-
"FOO_BAR[_<index>]",
|
|
183
|
-
);
|
|
126
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
127
|
+
command.options![0] as Option,
|
|
128
|
+
]),
|
|
129
|
+
).toEqual("FOO_BAR[_<index>]");
|
|
184
130
|
});
|
|
185
131
|
|
|
186
132
|
test("getConfigurationKey works for complex option argument", () => {
|
|
@@ -191,15 +137,11 @@ describe("configHelper tests", () => {
|
|
|
191
137
|
let arg2 = arg1.properties[0] as Option;
|
|
192
138
|
|
|
193
139
|
expect(
|
|
194
|
-
getSubCommandArgumentConfigurationKey(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
arg1 as unknown as SubCommandArgument,
|
|
200
|
-
arg2 as unknown as SubCommandArgument,
|
|
201
|
-
],
|
|
202
|
-
),
|
|
140
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
141
|
+
arg0 as unknown as SubCommandArgument,
|
|
142
|
+
arg1 as unknown as SubCommandArgument,
|
|
143
|
+
arg2 as unknown as SubCommandArgument,
|
|
144
|
+
]),
|
|
203
145
|
).toBeUndefined();
|
|
204
146
|
|
|
205
147
|
command = getSubCommandWithComplexOptions(true, true);
|
|
@@ -209,50 +151,32 @@ describe("configHelper tests", () => {
|
|
|
209
151
|
arg2 = arg1.properties[0] as Option;
|
|
210
152
|
|
|
211
153
|
expect(
|
|
212
|
-
getSubCommandArgumentConfigurationKey(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
arg2 as unknown as SubCommandArgument,
|
|
219
|
-
],
|
|
220
|
-
),
|
|
221
|
-
).toEqual(
|
|
222
|
-
"FOO_SUBCOMMAND_ALPHA[_<index>]_BETA[_<index>]_GAMMA",
|
|
223
|
-
);
|
|
154
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
155
|
+
arg0 as unknown as SubCommandArgument,
|
|
156
|
+
arg1 as unknown as SubCommandArgument,
|
|
157
|
+
arg2 as unknown as SubCommandArgument,
|
|
158
|
+
]),
|
|
159
|
+
).toEqual("FOO_SUBCOMMAND_ALPHA[_<index>]_BETA[_<index>]_GAMMA");
|
|
224
160
|
|
|
225
161
|
arg2 = arg1.properties[1] as Option;
|
|
226
162
|
|
|
227
163
|
expect(
|
|
228
|
-
getSubCommandArgumentConfigurationKey(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
arg2 as unknown as SubCommandArgument,
|
|
235
|
-
],
|
|
236
|
-
),
|
|
237
|
-
).toEqual(
|
|
238
|
-
"FOO_SUBCOMMAND_ALPHA[_<index>]_BETA[_<index>]_DELTA[_<index>]",
|
|
239
|
-
);
|
|
164
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
165
|
+
arg0 as unknown as SubCommandArgument,
|
|
166
|
+
arg1 as unknown as SubCommandArgument,
|
|
167
|
+
arg2 as unknown as SubCommandArgument,
|
|
168
|
+
]),
|
|
169
|
+
).toEqual("FOO_SUBCOMMAND_ALPHA[_<index>]_BETA[_<index>]_DELTA[_<index>]");
|
|
240
170
|
|
|
241
171
|
arg0 = command.options![1] as ComplexOption;
|
|
242
172
|
arg1 = arg0.properties[0] as ComplexOption;
|
|
243
173
|
|
|
244
174
|
expect(
|
|
245
|
-
getSubCommandArgumentConfigurationKey(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
arg1 as unknown as SubCommandArgument,
|
|
251
|
-
],
|
|
252
|
-
),
|
|
253
|
-
).toEqual(
|
|
254
|
-
"FOO_SUBCOMMAND_EPSILON_FOO_BAR_A",
|
|
255
|
-
);
|
|
175
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
176
|
+
arg0 as unknown as SubCommandArgument,
|
|
177
|
+
arg1 as unknown as SubCommandArgument,
|
|
178
|
+
]),
|
|
179
|
+
).toEqual("FOO_SUBCOMMAND_EPSILON_FOO_BAR_A");
|
|
256
180
|
|
|
257
181
|
command = getSubCommandWithComplexOptions(true, true, true);
|
|
258
182
|
|
|
@@ -260,16 +184,10 @@ describe("configHelper tests", () => {
|
|
|
260
184
|
arg1 = arg0.properties[1] as ComplexOption;
|
|
261
185
|
|
|
262
186
|
expect(
|
|
263
|
-
getSubCommandArgumentConfigurationKey(
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
arg1 as unknown as SubCommandArgument,
|
|
269
|
-
],
|
|
270
|
-
),
|
|
271
|
-
).toEqual(
|
|
272
|
-
"FOO_SUBCOMMAND_EPSILON_FOO_BAR_B[_<index>]",
|
|
273
|
-
);
|
|
187
|
+
getSubCommandArgumentConfigurationKey(getCLIConfig(), command, [
|
|
188
|
+
arg0 as unknown as SubCommandArgument,
|
|
189
|
+
arg1 as unknown as SubCommandArgument,
|
|
190
|
+
]),
|
|
191
|
+
).toEqual("FOO_SUBCOMMAND_EPSILON_FOO_BAR_B[_<index>]");
|
|
274
192
|
});
|
|
275
193
|
});
|
|
@@ -19,37 +19,23 @@ describe("envVarHelper tests", () => {
|
|
|
19
19
|
try {
|
|
20
20
|
let command = getGlobalCommand("blah", true);
|
|
21
21
|
|
|
22
|
-
expect(
|
|
23
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
24
|
-
).toBeUndefined();
|
|
22
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
25
23
|
|
|
26
24
|
command = getGlobalCommand("blah", true, false, true);
|
|
27
25
|
|
|
28
|
-
expect(
|
|
29
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
30
|
-
).toBeUndefined();
|
|
26
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
31
27
|
|
|
32
28
|
process.env["FOO_BLAH"] = "foo";
|
|
33
29
|
|
|
34
|
-
expect(
|
|
35
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
36
|
-
).toEqual(
|
|
37
|
-
"foo",
|
|
38
|
-
);
|
|
30
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toEqual("foo");
|
|
39
31
|
|
|
40
32
|
command = getGlobalCommand("blah", true, false, true, "FOO_BAR");
|
|
41
33
|
|
|
42
|
-
expect(
|
|
43
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
44
|
-
).toBeUndefined();
|
|
34
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
45
35
|
|
|
46
36
|
process.env["FOO_BAR"] = "foo";
|
|
47
37
|
|
|
48
|
-
expect(
|
|
49
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
50
|
-
).toEqual(
|
|
51
|
-
"foo",
|
|
52
|
-
);
|
|
38
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toEqual("foo");
|
|
53
39
|
|
|
54
40
|
command = getGlobalModifierCommandWithArgument(
|
|
55
41
|
"FOO_BAR",
|
|
@@ -65,27 +51,17 @@ describe("envVarHelper tests", () => {
|
|
|
65
51
|
// any env var value should set boolean option to true
|
|
66
52
|
process.env["FOO_BAR"] = "foo";
|
|
67
53
|
|
|
68
|
-
expect(
|
|
69
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
70
|
-
).toEqual(
|
|
71
|
-
"true",
|
|
72
|
-
);
|
|
54
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toEqual("true");
|
|
73
55
|
|
|
74
56
|
// empty env var value should set boolean option to false
|
|
75
57
|
process.env["FOO_BAR"] = "";
|
|
76
58
|
|
|
77
|
-
expect(
|
|
78
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
79
|
-
).toEqual(
|
|
80
|
-
"false",
|
|
81
|
-
);
|
|
59
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toEqual("false");
|
|
82
60
|
|
|
83
61
|
// no env var value should not set boolean option to false
|
|
84
62
|
delete process.env["FOO_BAR"];
|
|
85
63
|
|
|
86
|
-
expect(
|
|
87
|
-
getGlobalCommandValueFromEnvVars(getCLIConfig(), command),
|
|
88
|
-
).toBeUndefined();
|
|
64
|
+
expect(getGlobalCommandValueFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
89
65
|
} finally {
|
|
90
66
|
delete process.env["FOO_BLAH_VALUE"];
|
|
91
67
|
delete process.env["FOO_BAR"];
|
|
@@ -96,9 +72,7 @@ describe("envVarHelper tests", () => {
|
|
|
96
72
|
try {
|
|
97
73
|
let command = getSubCommandWithOption("blah", true, false);
|
|
98
74
|
|
|
99
|
-
expect(
|
|
100
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
101
|
-
).toBeUndefined();
|
|
75
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
102
76
|
|
|
103
77
|
command = getSubCommandWithOption(
|
|
104
78
|
"blah",
|
|
@@ -110,17 +84,13 @@ describe("envVarHelper tests", () => {
|
|
|
110
84
|
true,
|
|
111
85
|
);
|
|
112
86
|
|
|
113
|
-
expect(
|
|
114
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
115
|
-
).toBeUndefined();
|
|
87
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
116
88
|
|
|
117
89
|
process.env["FOO_BLAH_FOO"] = "bar";
|
|
118
90
|
|
|
119
|
-
expect(
|
|
120
|
-
|
|
121
|
-
)
|
|
122
|
-
{ foo: "bar" },
|
|
123
|
-
);
|
|
91
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
92
|
+
foo: "bar",
|
|
93
|
+
});
|
|
124
94
|
|
|
125
95
|
command = getSubCommandWithOption(
|
|
126
96
|
"blah",
|
|
@@ -133,17 +103,13 @@ describe("envVarHelper tests", () => {
|
|
|
133
103
|
"FOO_BAR",
|
|
134
104
|
);
|
|
135
105
|
|
|
136
|
-
expect(
|
|
137
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
138
|
-
).toBeUndefined();
|
|
106
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
139
107
|
|
|
140
108
|
process.env["FOO_BAR"] = "bar";
|
|
141
109
|
|
|
142
|
-
expect(
|
|
143
|
-
|
|
144
|
-
)
|
|
145
|
-
{ foo: "bar" },
|
|
146
|
-
);
|
|
110
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
111
|
+
foo: "bar",
|
|
112
|
+
});
|
|
147
113
|
|
|
148
114
|
command = getSubCommandWithOption(
|
|
149
115
|
"blah",
|
|
@@ -159,27 +125,21 @@ describe("envVarHelper tests", () => {
|
|
|
159
125
|
// any env var value should set boolean option to true
|
|
160
126
|
process.env["FOO_BAR"] = "foo";
|
|
161
127
|
|
|
162
|
-
expect(
|
|
163
|
-
|
|
164
|
-
)
|
|
165
|
-
{ foo: "true" },
|
|
166
|
-
);
|
|
128
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
129
|
+
foo: "true",
|
|
130
|
+
});
|
|
167
131
|
|
|
168
132
|
// empty env var value should set boolean option to false
|
|
169
133
|
process.env["FOO_BAR"] = "";
|
|
170
134
|
|
|
171
|
-
expect(
|
|
172
|
-
|
|
173
|
-
)
|
|
174
|
-
{ foo: "false" },
|
|
175
|
-
);
|
|
135
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
136
|
+
foo: "false",
|
|
137
|
+
});
|
|
176
138
|
|
|
177
139
|
delete process.env["FOO_BAR"];
|
|
178
140
|
|
|
179
141
|
// no env var value should not set boolean option to false
|
|
180
|
-
expect(
|
|
181
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
182
|
-
).toBeUndefined();
|
|
142
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
183
143
|
} finally {
|
|
184
144
|
delete process.env["FOO_BLAH_FOO"];
|
|
185
145
|
delete process.env["FOO_BAR"];
|
|
@@ -190,9 +150,7 @@ describe("envVarHelper tests", () => {
|
|
|
190
150
|
try {
|
|
191
151
|
let command = getSubCommandWithPositional("blah", true, false);
|
|
192
152
|
|
|
193
|
-
expect(
|
|
194
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
195
|
-
).toBeUndefined();
|
|
153
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
196
154
|
|
|
197
155
|
command = getSubCommandWithPositional(
|
|
198
156
|
"blah",
|
|
@@ -202,17 +160,13 @@ describe("envVarHelper tests", () => {
|
|
|
202
160
|
true,
|
|
203
161
|
);
|
|
204
162
|
|
|
205
|
-
expect(
|
|
206
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
207
|
-
).toBeUndefined();
|
|
163
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
208
164
|
|
|
209
165
|
process.env["FOO_BLAH_FOO"] = "bar";
|
|
210
166
|
|
|
211
|
-
expect(
|
|
212
|
-
|
|
213
|
-
)
|
|
214
|
-
{ foo: "bar" },
|
|
215
|
-
);
|
|
167
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
168
|
+
foo: "bar",
|
|
169
|
+
});
|
|
216
170
|
|
|
217
171
|
command = getSubCommandWithPositional(
|
|
218
172
|
"blah",
|
|
@@ -223,17 +177,13 @@ describe("envVarHelper tests", () => {
|
|
|
223
177
|
"FOO_BAR",
|
|
224
178
|
);
|
|
225
179
|
|
|
226
|
-
expect(
|
|
227
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
228
|
-
).toBeUndefined();
|
|
180
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
229
181
|
|
|
230
182
|
process.env["FOO_BAR"] = "bar";
|
|
231
183
|
|
|
232
|
-
expect(
|
|
233
|
-
|
|
234
|
-
)
|
|
235
|
-
{ foo: "bar" },
|
|
236
|
-
);
|
|
184
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
185
|
+
foo: "bar",
|
|
186
|
+
});
|
|
237
187
|
|
|
238
188
|
command = getSubCommandWithPositional(
|
|
239
189
|
"blah",
|
|
@@ -247,27 +197,21 @@ describe("envVarHelper tests", () => {
|
|
|
247
197
|
// any env var value should set boolean option to true
|
|
248
198
|
process.env["FOO_BAR"] = "foo";
|
|
249
199
|
|
|
250
|
-
expect(
|
|
251
|
-
|
|
252
|
-
)
|
|
253
|
-
{ foo: "true" },
|
|
254
|
-
);
|
|
200
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
201
|
+
foo: "true",
|
|
202
|
+
});
|
|
255
203
|
|
|
256
204
|
// empty env var value should set boolean option to false
|
|
257
205
|
process.env["FOO_BAR"] = "";
|
|
258
206
|
|
|
259
|
-
expect(
|
|
260
|
-
|
|
261
|
-
)
|
|
262
|
-
{ foo: "false" },
|
|
263
|
-
);
|
|
207
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
208
|
+
foo: "false",
|
|
209
|
+
});
|
|
264
210
|
|
|
265
211
|
// no env var value should not set boolean option to false
|
|
266
212
|
delete process.env["FOO_BAR"];
|
|
267
213
|
|
|
268
|
-
expect(
|
|
269
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
270
|
-
).toBeUndefined();
|
|
214
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
271
215
|
} finally {
|
|
272
216
|
delete process.env["FOO_BLAH_FOO"];
|
|
273
217
|
delete process.env["FOO_BAR"];
|
|
@@ -278,18 +222,14 @@ describe("envVarHelper tests", () => {
|
|
|
278
222
|
try {
|
|
279
223
|
const command = getSubCommandWithComplexOptions(true, true);
|
|
280
224
|
|
|
281
|
-
expect(
|
|
282
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
283
|
-
).toBeUndefined();
|
|
225
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
284
226
|
|
|
285
227
|
process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_GAMMA"] = "bar1";
|
|
286
228
|
process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_DELTA_0"] = "bar2";
|
|
287
229
|
|
|
288
|
-
expect(
|
|
289
|
-
|
|
290
|
-
)
|
|
291
|
-
{ alpha: [{ beta: [{ delta: ["bar2"], gamma: "bar1" }] }] },
|
|
292
|
-
);
|
|
230
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toEqual({
|
|
231
|
+
alpha: [{ beta: [{ delta: ["bar2"], gamma: "bar1" }] }],
|
|
232
|
+
});
|
|
293
233
|
} finally {
|
|
294
234
|
delete process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_GAMMA"];
|
|
295
235
|
delete process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_DELTA_0"];
|
|
@@ -300,16 +240,12 @@ describe("envVarHelper tests", () => {
|
|
|
300
240
|
try {
|
|
301
241
|
const command = getSubCommandWithComplexOptions(true);
|
|
302
242
|
|
|
303
|
-
expect(
|
|
304
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
305
|
-
).toBeUndefined();
|
|
243
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
306
244
|
|
|
307
245
|
process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_GAMMA"] = "bar1";
|
|
308
246
|
process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_DELTA_0"] = "bar2";
|
|
309
247
|
|
|
310
|
-
expect(
|
|
311
|
-
getSubCommandValuesFromEnvVars(getCLIConfig(), command),
|
|
312
|
-
).toBeUndefined();
|
|
248
|
+
expect(getSubCommandValuesFromEnvVars(getCLIConfig(), command)).toBeUndefined();
|
|
313
249
|
} finally {
|
|
314
250
|
delete process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_GAMMA"];
|
|
315
251
|
delete process.env["FOO_SUBCOMMAND_ALPHA_0_BETA_0_DELTA_0"];
|