@shell-shock/core 0.11.0 → 0.12.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/dist/components/docs.d.cts +5 -5
- package/dist/components/docs.d.mts +5 -5
- package/dist/components/docs.d.mts.map +1 -1
- package/dist/components/helpers.cjs +9 -0
- package/dist/components/helpers.cjs.map +1 -1
- package/dist/components/helpers.d.cts +15 -7
- package/dist/components/helpers.d.cts.map +1 -1
- package/dist/components/helpers.d.mts +15 -7
- package/dist/components/helpers.d.mts.map +1 -1
- package/dist/components/helpers.mjs +9 -1
- package/dist/components/helpers.mjs.map +1 -1
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.d.cts +2 -2
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +2 -2
- package/dist/components/options-parser-logic.cjs +142 -62
- package/dist/components/options-parser-logic.cjs.map +1 -1
- package/dist/components/options-parser-logic.d.cts +15 -15
- package/dist/components/options-parser-logic.d.cts.map +1 -1
- package/dist/components/options-parser-logic.d.mts +15 -15
- package/dist/components/options-parser-logic.d.mts.map +1 -1
- package/dist/components/options-parser-logic.mjs +143 -63
- package/dist/components/options-parser-logic.mjs.map +1 -1
- package/dist/components/usage.d.cts +2 -2
- package/dist/components/usage.d.mts +2 -2
- package/dist/components/utils-builtin.d.cts +9 -9
- package/dist/components/utils-builtin.d.cts.map +1 -1
- package/dist/components/utils-builtin.d.mts +9 -9
- package/dist/components/utils-builtin.d.mts.map +1 -1
- package/dist/plugin-utils/description-helpers.cjs +105 -0
- package/dist/plugin-utils/description-helpers.cjs.map +1 -0
- package/dist/plugin-utils/description-helpers.d.cts +44 -0
- package/dist/plugin-utils/description-helpers.d.cts.map +1 -0
- package/dist/plugin-utils/description-helpers.d.mts +44 -0
- package/dist/plugin-utils/description-helpers.d.mts.map +1 -0
- package/dist/plugin-utils/description-helpers.mjs +101 -0
- package/dist/plugin-utils/description-helpers.mjs.map +1 -0
- package/dist/plugin-utils/index.cjs +5 -0
- package/dist/plugin-utils/index.d.cts +2 -1
- package/dist/plugin-utils/index.d.mts +2 -1
- package/dist/plugin-utils/index.mjs +2 -1
- package/dist/plugin-utils/type-checks.d.mts.map +1 -1
- package/dist/plugin.cjs +4 -6
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +4 -6
- package/dist/plugin.mjs.map +1 -1
- package/dist/resolver/deepkit.cjs +6 -3
- package/dist/resolver/deepkit.cjs.map +1 -1
- package/dist/resolver/deepkit.mjs +6 -3
- package/dist/resolver/deepkit.mjs.map +1 -1
- package/dist/resolver/helpers.cjs +15 -21
- package/dist/resolver/helpers.cjs.map +1 -1
- package/dist/resolver/helpers.mjs +15 -21
- package/dist/resolver/helpers.mjs.map +1 -1
- package/dist/resolver/resolve.cjs +13 -13
- package/dist/resolver/resolve.cjs.map +1 -1
- package/dist/resolver/resolve.mjs +13 -13
- package/dist/resolver/resolve.mjs.map +1 -1
- package/dist/types/config.cjs +5 -3
- package/dist/types/config.cjs.map +1 -1
- package/dist/types/config.d.cts +7 -3
- package/dist/types/config.d.cts.map +1 -1
- package/dist/types/config.d.mts +7 -3
- package/dist/types/config.d.mts.map +1 -1
- package/dist/types/config.mjs +5 -3
- package/dist/types/config.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -47,7 +47,7 @@ function DynamicSegmentsParserLogic(props) {
|
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
function ArgumentsParserLogic(props) {
|
|
50
|
-
const { command,
|
|
50
|
+
const { command, appSpecificEnvPrefix, isCaseSensitive } = props;
|
|
51
51
|
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
52
52
|
get when() {
|
|
53
53
|
return command.args && command.args.length > 0;
|
|
@@ -78,33 +78,47 @@ function ArgumentsParserLogic(props) {
|
|
|
78
78
|
},
|
|
79
79
|
hardline: true,
|
|
80
80
|
children: (arg, index) => [
|
|
81
|
-
(0, __alloy_js_core_jsx_runtime.createComponent)(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return (0, __stryke_string_format_camel_case.camelCase)(arg.name);
|
|
81
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
82
|
+
get when() {
|
|
83
|
+
return (0, __stryke_type_checks_is_set_string.isSetString)(arg.env) || arg.default !== void 0 || (arg.kind === require_types_command.CommandParameterKinds.string || arg.kind === require_types_command.CommandParameterKinds.number) && arg.variadic;
|
|
85
84
|
},
|
|
86
|
-
get
|
|
87
|
-
return
|
|
85
|
+
get fallback() {
|
|
86
|
+
return [
|
|
87
|
+
(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`let ${(0, __stryke_string_format_camel_case.camelCase)(arg.name)}!: `),
|
|
88
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.CommandParameterType, { parameter: arg }),
|
|
89
|
+
__alloy_js_core.code`; `
|
|
90
|
+
];
|
|
88
91
|
},
|
|
89
|
-
get
|
|
90
|
-
return
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
get children() {
|
|
93
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
94
|
+
"let": true,
|
|
95
|
+
get name() {
|
|
96
|
+
return (0, __stryke_string_format_camel_case.camelCase)(arg.name);
|
|
93
97
|
},
|
|
94
|
-
get
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
}), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
98
|
-
get when() {
|
|
99
|
-
return arg.default !== void 0;
|
|
98
|
+
get type() {
|
|
99
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.CommandParameterType, { parameter: arg });
|
|
100
100
|
},
|
|
101
|
-
get
|
|
102
|
-
return (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
get initializer() {
|
|
102
|
+
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
103
|
+
get when() {
|
|
104
|
+
return (0, __stryke_type_checks_is_set_string.isSetString)(arg.env);
|
|
105
|
+
},
|
|
106
|
+
get children() {
|
|
107
|
+
return __alloy_js_core.code`env.${appSpecificEnvPrefix}_${(0, __stryke_string_format_constant_case.constantCase)(String(arg.env))} ?? `;
|
|
108
|
+
}
|
|
109
|
+
}), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
110
|
+
get when() {
|
|
111
|
+
return arg.default !== void 0;
|
|
112
|
+
},
|
|
113
|
+
get fallback() {
|
|
114
|
+
return (arg.kind === require_types_command.CommandParameterKinds.string || arg.kind === require_types_command.CommandParameterKinds.number) && arg.variadic ? __alloy_js_core.code`[]` : __alloy_js_core.code`undefined;`;
|
|
115
|
+
},
|
|
116
|
+
get children() {
|
|
117
|
+
return arg.kind === require_types_command.CommandParameterKinds.string ? __alloy_js_core.code`"${arg.default}"` : __alloy_js_core.code`${arg.default}`;
|
|
118
|
+
}
|
|
119
|
+
})];
|
|
106
120
|
}
|
|
107
|
-
})
|
|
121
|
+
});
|
|
108
122
|
}
|
|
109
123
|
}),
|
|
110
124
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
|
|
@@ -169,7 +183,7 @@ function OptionsMember({ option }) {
|
|
|
169
183
|
},
|
|
170
184
|
doc,
|
|
171
185
|
get type() {
|
|
172
|
-
return
|
|
186
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.CommandParameterType, { parameter: option });
|
|
173
187
|
},
|
|
174
188
|
get optional() {
|
|
175
189
|
return option.optional;
|
|
@@ -188,7 +202,7 @@ function OptionsMember({ option }) {
|
|
|
188
202
|
},
|
|
189
203
|
doc,
|
|
190
204
|
get type() {
|
|
191
|
-
return
|
|
205
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.CommandParameterType, { parameter: option });
|
|
192
206
|
},
|
|
193
207
|
get optional() {
|
|
194
208
|
return option.optional;
|
|
@@ -206,7 +220,9 @@ function OptionsMember({ option }) {
|
|
|
206
220
|
return option.name;
|
|
207
221
|
},
|
|
208
222
|
doc,
|
|
209
|
-
type
|
|
223
|
+
get type() {
|
|
224
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.CommandParameterType, { parameter: option });
|
|
225
|
+
},
|
|
210
226
|
get optional() {
|
|
211
227
|
return option.optional;
|
|
212
228
|
}
|
|
@@ -265,6 +281,14 @@ function OptionsMemberParserLogic(props) {
|
|
|
265
281
|
},
|
|
266
282
|
children: __alloy_js_core.code`...arg.replace(${equalsRegex}, "").split(",").map(item => item.trim().replace(/^("|')/, "").replace(/("|')$/, "")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `
|
|
267
283
|
}),
|
|
284
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
285
|
+
get when() {
|
|
286
|
+
return (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.choices && option.choices.length > 0;
|
|
287
|
+
},
|
|
288
|
+
get children() {
|
|
289
|
+
return __alloy_js_core.code` as ${option.choices?.map((choice) => (0, __stryke_type_checks_is_set_string.isSetString)(choice) ? `"${choice}"` : choice).join(" | ")} `;
|
|
290
|
+
}
|
|
291
|
+
}),
|
|
268
292
|
__alloy_js_core.code`); `
|
|
269
293
|
];
|
|
270
294
|
}
|
|
@@ -292,6 +316,14 @@ function OptionsMemberParserLogic(props) {
|
|
|
292
316
|
},
|
|
293
317
|
children: __alloy_js_core.code`...args[++i].split(",").map(item => item.trim().replace(/^("|')/, "").replace(/("|')$/, "")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `
|
|
294
318
|
}),
|
|
319
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
320
|
+
get when() {
|
|
321
|
+
return (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.choices && option.choices.length > 0;
|
|
322
|
+
},
|
|
323
|
+
get children() {
|
|
324
|
+
return __alloy_js_core.code` as ${option.choices?.map((choice) => (0, __stryke_type_checks_is_set_string.isSetString)(choice) ? `"${choice}"` : choice).join(" | ")} `;
|
|
325
|
+
}
|
|
326
|
+
}),
|
|
295
327
|
__alloy_js_core.code`); `
|
|
296
328
|
];
|
|
297
329
|
}
|
|
@@ -312,13 +344,25 @@ function OptionsMemberParserLogic(props) {
|
|
|
312
344
|
return option.kind === require_types_command.CommandParameterKinds.string;
|
|
313
345
|
},
|
|
314
346
|
get children() {
|
|
315
|
-
return [
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
347
|
+
return [
|
|
348
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
349
|
+
get when() {
|
|
350
|
+
return name.includes("?") || name.includes("-");
|
|
351
|
+
},
|
|
352
|
+
fallback: __alloy_js_core.code`options.${name}`,
|
|
353
|
+
children: __alloy_js_core.code`options["${name}"]`
|
|
354
|
+
}),
|
|
355
|
+
__alloy_js_core.code` = arg.replace(${equalsRegex}, "").trim().replace(/^("|')/, "").replace(/("|')$/, "")`,
|
|
356
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
357
|
+
get when() {
|
|
358
|
+
return option.choices && option.choices.length > 0;
|
|
359
|
+
},
|
|
360
|
+
get children() {
|
|
361
|
+
return __alloy_js_core.code` as ${option.choices?.map((choice) => `"${choice}"`).join(" | ")}`;
|
|
362
|
+
}
|
|
363
|
+
}),
|
|
364
|
+
__alloy_js_core.code`; `
|
|
365
|
+
];
|
|
322
366
|
}
|
|
323
367
|
}), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
324
368
|
get when() {
|
|
@@ -335,13 +379,25 @@ function OptionsMemberParserLogic(props) {
|
|
|
335
379
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
336
380
|
condition: `!Number.isNaN(value)`,
|
|
337
381
|
get children() {
|
|
338
|
-
return [
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
382
|
+
return [
|
|
383
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
384
|
+
get when() {
|
|
385
|
+
return name.includes("?") || name.includes("-");
|
|
386
|
+
},
|
|
387
|
+
fallback: __alloy_js_core.code`options.${name}`,
|
|
388
|
+
children: __alloy_js_core.code`options["${name}"]`
|
|
389
|
+
}),
|
|
390
|
+
__alloy_js_core.code` = value`,
|
|
391
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
392
|
+
get when() {
|
|
393
|
+
return option.choices && option.choices.length > 0;
|
|
394
|
+
},
|
|
395
|
+
get children() {
|
|
396
|
+
return __alloy_js_core.code` as ${option.choices?.join(" | ")}`;
|
|
397
|
+
}
|
|
398
|
+
}),
|
|
399
|
+
__alloy_js_core.code`; `
|
|
400
|
+
];
|
|
345
401
|
}
|
|
346
402
|
})
|
|
347
403
|
];
|
|
@@ -357,13 +413,25 @@ function OptionsMemberParserLogic(props) {
|
|
|
357
413
|
return option.kind === require_types_command.CommandParameterKinds.string;
|
|
358
414
|
},
|
|
359
415
|
get children() {
|
|
360
|
-
return [
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
416
|
+
return [
|
|
417
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
418
|
+
get when() {
|
|
419
|
+
return name.includes("?") || name.includes("-");
|
|
420
|
+
},
|
|
421
|
+
fallback: __alloy_js_core.code`options.${name}`,
|
|
422
|
+
children: __alloy_js_core.code`options["${name}"]`
|
|
423
|
+
}),
|
|
424
|
+
__alloy_js_core.code` = args[++i].trim().replace(/^("|')/, "").replace(/("|')$/, "")`,
|
|
425
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
426
|
+
get when() {
|
|
427
|
+
return option.choices && option.choices.length > 0;
|
|
428
|
+
},
|
|
429
|
+
get children() {
|
|
430
|
+
return __alloy_js_core.code` as ${option.choices?.map((choice) => `"${choice}"`).join(" | ")}`;
|
|
431
|
+
}
|
|
432
|
+
}),
|
|
433
|
+
__alloy_js_core.code`; `
|
|
434
|
+
];
|
|
367
435
|
}
|
|
368
436
|
}), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
369
437
|
get when() {
|
|
@@ -380,13 +448,25 @@ function OptionsMemberParserLogic(props) {
|
|
|
380
448
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
381
449
|
condition: `!Number.isNaN(value)`,
|
|
382
450
|
get children() {
|
|
383
|
-
return [
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
451
|
+
return [
|
|
452
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
453
|
+
get when() {
|
|
454
|
+
return name.includes("?") || name.includes("-");
|
|
455
|
+
},
|
|
456
|
+
fallback: __alloy_js_core.code`options.${name}`,
|
|
457
|
+
children: __alloy_js_core.code`options["${name}"]`
|
|
458
|
+
}),
|
|
459
|
+
__alloy_js_core.code` = value`,
|
|
460
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
461
|
+
get when() {
|
|
462
|
+
return option.choices && option.choices.length > 0;
|
|
463
|
+
},
|
|
464
|
+
get children() {
|
|
465
|
+
return __alloy_js_core.code` as ${option.choices?.join(" | ")}`;
|
|
466
|
+
}
|
|
467
|
+
}),
|
|
468
|
+
__alloy_js_core.code`; `
|
|
469
|
+
];
|
|
390
470
|
}
|
|
391
471
|
})
|
|
392
472
|
];
|
|
@@ -494,7 +574,7 @@ function OptionsInterfaceDeclaration(props) {
|
|
|
494
574
|
* The command options parser logic.
|
|
495
575
|
*/
|
|
496
576
|
function OptionsParserLogic(props) {
|
|
497
|
-
const { command,
|
|
577
|
+
const { command, appSpecificEnvPrefix, isCaseSensitive = false } = props;
|
|
498
578
|
const options = (0, __alloy_js_core.computed)(() => require_contexts_options.computedOptions(command));
|
|
499
579
|
return [
|
|
500
580
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
@@ -502,10 +582,10 @@ function OptionsParserLogic(props) {
|
|
|
502
582
|
name: "options",
|
|
503
583
|
get initializer() {
|
|
504
584
|
return __alloy_js_core.code` {
|
|
505
|
-
${Object.entries(options.value).map(([name, option]) => {
|
|
506
|
-
if (option.kind === require_types_command.CommandParameterKinds.string) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${
|
|
507
|
-
else if (option.kind === require_types_command.CommandParameterKinds.number) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${
|
|
508
|
-
else if (option.kind === require_types_command.CommandParameterKinds.boolean) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${
|
|
585
|
+
${Object.entries(options.value).filter(([, option]) => option.env || option.default !== void 0 || (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.variadic).map(([name, option]) => {
|
|
586
|
+
if (option.kind === require_types_command.CommandParameterKinds.string) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${appSpecificEnvPrefix}_${option.env}` : ""}${option.variadic ? option.default !== void 0 ? `${option.env ? " ?? " : ""}${JSON.stringify(option.default)}` : option.env ? " ?? []" : "[]" : option.default !== void 0 ? `${option.env ? " ?? " : ""}"${option.default}"` : ""}, `;
|
|
587
|
+
else if (option.kind === require_types_command.CommandParameterKinds.number) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${appSpecificEnvPrefix}_${option.env}` : ""}${option.variadic ? option.default && Array.isArray(option.default) ? `${option.env ? " ?? " : ""}${JSON.stringify(option.default)}` : option.env ? " ?? []" : "[]" : option.default !== void 0 ? `${option.env ? " ?? " : ""}${option.default}` : ""}, `;
|
|
588
|
+
else if (option.kind === require_types_command.CommandParameterKinds.boolean) return ` ${name.includes("?") || name.includes("-") ? `"${name}"` : `${name}`}: ${option.env ? `env.${appSpecificEnvPrefix}_${option.env} ?? ` : ""}${option.default ? "true" : "false"},`;
|
|
509
589
|
return "";
|
|
510
590
|
}).join("")}
|
|
511
591
|
} as ${(0, __stryke_string_format_pascal_case.pascalCase)(command.name)}Options;`;
|
|
@@ -583,7 +663,7 @@ function OptionsParserLogic(props) {
|
|
|
583
663
|
* The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.
|
|
584
664
|
*/
|
|
585
665
|
function CommandParserLogic(props) {
|
|
586
|
-
const { command,
|
|
666
|
+
const { command, appSpecificEnvPrefix, isCaseSensitive = false } = props;
|
|
587
667
|
return [
|
|
588
668
|
(0, __alloy_js_core_jsx_runtime.createComponent)(DynamicSegmentsParserLogic, {
|
|
589
669
|
command,
|
|
@@ -592,13 +672,13 @@ function CommandParserLogic(props) {
|
|
|
592
672
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
|
|
593
673
|
(0, __alloy_js_core_jsx_runtime.createComponent)(OptionsParserLogic, {
|
|
594
674
|
command,
|
|
595
|
-
|
|
675
|
+
appSpecificEnvPrefix,
|
|
596
676
|
isCaseSensitive
|
|
597
677
|
}),
|
|
598
678
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
|
|
599
679
|
(0, __alloy_js_core_jsx_runtime.createComponent)(ArgumentsParserLogic, {
|
|
600
680
|
command,
|
|
601
|
-
|
|
681
|
+
appSpecificEnvPrefix,
|
|
602
682
|
isCaseSensitive
|
|
603
683
|
}),
|
|
604
684
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","Spacing","camelCase","constantCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","CommandParameterKinds","BooleanInputParserLogic","DynamicSegmentsParserLogic","props","command","_$createComponent","each","segments","children","segment","index","when","name","type","_$createIntrinsic","condition","ArgumentsParserLogic","envPrefix","isCaseSensitive","args","length","initializer","Object","values","options","map","option","toLowerCase","replaceAll","alias","a","join","hardline","arg","kind","boolean","number","string","variadic","optional","env","String","default","undefined","fallback","_$memo","OptionsMember","doc","description","title","Boolean","OptionsMemberParserLogic","equalsRegex","includes","isNegativeOf","OptionsMemberParserCondition","aliasProp","OptionsInterfaceDeclaration","value","OptionsParserLogic","entries","JSON","stringify","filter","i","CommandParserLogic"],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { computedOptions } from \"../contexts/options\";\nimport {\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"../plugin-utils/context-helpers\";\nimport type {\n BooleanCommandOption,\n CommandOption,\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport { BooleanInputParserLogic } from \"./helpers\";\n\nexport interface DynamicSegmentsParserLogicProps {\n /**\n * The command to generate the dynamic path segments parser logic for. This is used to access the command options and parameters when generating the parser logic for dynamic path segments.\n */\n command: CommandTree;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function DynamicSegmentsParserLogic(\n props: DynamicSegmentsParserLogicProps\n) {\n const { command } = props;\n\n return (\n <For each={command.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type=\"string | undefined\"\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(\n getDynamicPathSegmentName(segment)\n )} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\nexport interface ArgumentsParserLogicProps {\n /**\n * The command to generate the positional parameters parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function ArgumentsParserLogic(props: ArgumentsParserLogicProps) {\n const { command, envPrefix, isCaseSensitive } = props;\n\n return (\n <Show when={command.args && command.args.length > 0}>\n <VarDeclaration\n let\n name=\"optionsIndex\"\n type=\"number\"\n initializer={code`Math.max(0, args.slice(${\n command.segments.length + 1\n }).findIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1};`}\n />\n <Spacing />\n <VarDeclaration\n let\n name=\"argsIndex\"\n type=\"number\"\n initializer={code`optionsIndex > ${\n command.segments.length + 1\n } ? ${command.segments.length + 1} : (Math.max(0, args.slice(optionsIndex).findLastIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1});`}\n />\n <Spacing />\n <For each={command.args ?? []} hardline>\n {(arg, index) => (\n <>\n <VarDeclaration\n let\n name={camelCase(arg.name)}\n type={`${\n arg.kind === CommandParameterKinds.boolean\n ? \"boolean\"\n : arg.kind === CommandParameterKinds.number\n ? \"number\"\n : \"string\"\n }${\n (arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic\n ? \"[]\"\n : \"\"\n }${arg.optional ? \" | undefined\" : \"\"}`}\n initializer={\n <>\n <Show when={isSetString(arg.env)}>\n {code`env.${envPrefix}_${constantCase(String(arg.env))} ?? `}\n </Show>\n <Show\n when={arg.default !== undefined}\n fallback={\n (arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic\n ? code`[]`\n : code`undefined;`\n }>\n {arg.kind === CommandParameterKinds.string\n ? code`\"${arg.default}\"`\n : code`${arg.default}`}\n </Show>\n </>\n }\n />\n <Spacing />\n <IfStatement\n condition={code`argsIndex + ${index} < args.length && argsIndex + ${index} !== optionsIndex`}>\n {code`${camelCase(arg.name)} = `}\n <Show\n when={\n arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number\n }\n fallback={\n <BooleanInputParserLogic\n name={`args[argsIndex + ${index}] `}\n />\n }>\n <Show\n when={\n (arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic\n }\n fallback={\n <Show\n when={arg.kind === CommandParameterKinds.number}\n fallback={code`args[argsIndex + ${index}]; `}>\n {code`Number(args[argsIndex + ${index}]); `}\n </Show>\n }>\n {code`args.slice(argsIndex + ${\n index\n }, (optionsIndex > argsIndex ? optionsIndex : args.length) - ${\n command.args.length - index\n }).join(\" \").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean)`}\n </Show>\n </Show>\n </IfStatement>\n <Spacing />\n </>\n )}\n </For>\n </Show>\n );\n}\n\n/**\n * The command option interface property.\n */\nexport function OptionsMember({ option }: { option: CommandOption }) {\n const doc = option.description || `The ${option.title} command option.`;\n\n return (\n <>\n <Show when={Boolean(option.name)}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as StringCommandParameter).variadic\n ? \"string[]\"\n : \"string\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as NumberCommandParameter).variadic\n ? \"number[]\"\n : \"number\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === CommandParameterKinds.boolean}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type=\"boolean\"\n optional={option.optional}\n />\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserLogicProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * The command option to generate the parser logic for.\n */\n option: CommandOption;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\n/**\n * The command option property parser logic.\n */\nexport function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps) {\n const { name, option, isCaseSensitive } = props;\n\n const equalsRegex = `/^--?(${\n isCaseSensitive || name.length === 1\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})=/`;\n\n return (\n <>\n <Show\n when={\n option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number\n }>\n <Show\n when={\n (option as StringCommandParameter | NumberCommandParameter).variadic\n }>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} ??= []; `}>\n {code`options[\"${name}\"] ??= []; `}\n </Show>\n <hbr />\n <IfStatement\n condition={`${equalsRegex}.test(${\n isCaseSensitive\n ? \"arg\"\n : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === CommandParameterKinds.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === CommandParameterKinds.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </ElseIfClause>\n </Show>\n <Show\n when={\n !(option as StringCommandParameter | NumberCommandParameter)\n .variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </ElseIfClause>\n <hbr />\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.boolean}>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\").toLowerCase(); `}\n />\n <hbr />\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = `}>\n {code`options[\"${name}\"] = `}\n </Show>\n <BooleanInputParserLogic name=\"value\" />\n </IfStatement>\n <ElseClause>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = true; `}>\n {code`options[\"${name}\"] = true; `}\n </Show>\n </ElseClause>\n <Show when={Boolean((option as BooleanCommandOption).isNegativeOf)}>\n <hbr />\n <Show\n when={\n (option as BooleanCommandOption).isNegativeOf!.includes(\"?\") ||\n (option as BooleanCommandOption).isNegativeOf!.includes(\"-\")\n }\n fallback={code`options.${(option as BooleanCommandOption).isNegativeOf} = false; `}>\n {code`options[\"${(option as BooleanCommandOption).isNegativeOf}\"] = false; `}\n </Show>\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserConditionProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * Aliases for the option, which will also be parsed in the generated code. This will affect how the generated code compares command line arguments to option names and aliases.\n */\n alias?: string[];\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\nexport function OptionsMemberParserCondition(\n props: OptionsMemberParserConditionProps\n) {\n const { name, alias: aliasProp, isCaseSensitive } = props;\n\n return (\n <>\n {code`${\n isCaseSensitive\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`}\n <Show when={aliasProp && aliasProp.length > 0}>\n <For each={aliasProp ?? []}>\n {alias =>\n code` || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`\n }\n </For>\n </Show>\n </>\n );\n}\n\nexport function OptionsInterfaceDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <InterfaceDeclaration export name={`${pascalCase(command.name)}Options`}>\n <For each={Object.values(options.value)} hardline>\n {option => <OptionsMember option={option} />}\n </For>\n </InterfaceDeclaration>\n );\n}\n\nexport interface OptionsParserLogicProps {\n /**\n * The command to generate the options parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command options parser logic.\n */\nexport function OptionsParserLogic(props: OptionsParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <>\n <VarDeclaration\n const\n name=\"options\"\n initializer={code` {\n ${Object.entries(options.value)\n .map(([name, option]) => {\n if (option.kind === CommandParameterKinds.string) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}\"${option.default}\"`\n : \"\"\n }, `;\n } else if (option.kind === CommandParameterKinds.number) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}${option.default}`\n : \"\"\n }, `;\n } else if (option.kind === CommandParameterKinds.boolean) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env} ?? ` : \"\"\n }${option.default ? \"true\" : \"false\"},`;\n }\n\n return \"\";\n })\n .join(\"\")}\n } as ${pascalCase(command.name)}Options;`}\n />\n <Spacing />\n {code`for (let i = 0; i < args.slice(${\n command.segments.filter(segment => isDynamicPathSegment(segment)).length\n }).length; i++) { `}\n <hbr />\n <VarDeclaration\n const\n name=\"arg\"\n type=\"string\"\n initializer={code` args[i].length > 3 && args[i].startsWith(\"--\")\n ? \\`--\\${args[i].slice(2).replaceAll(\"-\", \"\")${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }}\\`\n : args[i].length > 2 && args[i].startsWith(\"-\")\n ? \\`-\\${args[i].slice(1).replaceAll(\"-\", \"\")}\\`\n : args[i]; `}\n />\n <hbr />\n\n <For each={Object.entries(options.value)} hardline>\n {([name, option], i) => (\n <Show\n when={i === 0}\n fallback={\n <ElseIfClause\n condition={\n <>\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n </>\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </ElseIfClause>\n }>\n <IfStatement\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </IfStatement>\n </Show>\n )}\n </For>\n\n <hbr />\n {code` } `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandParserLogicProps {\n /**\n * The command to generate the parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.\n */\nexport function CommandParserLogic(props: CommandParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n return (\n <>\n <DynamicSegmentsParserLogic\n command={command}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n <OptionsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n <ArgumentsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","Spacing","camelCase","constantCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","CommandParameterKinds","BooleanInputParserLogic","CommandParameterType","DynamicSegmentsParserLogic","props","command","_$createComponent","each","segments","children","segment","index","when","name","type","_$createIntrinsic","condition","ArgumentsParserLogic","appSpecificEnvPrefix","isCaseSensitive","args","length","initializer","Object","values","options","map","option","toLowerCase","replaceAll","alias","a","join","hardline","arg","env","default","undefined","kind","string","number","variadic","fallback","_$memo","parameter","String","OptionsMember","doc","description","title","Boolean","optional","boolean","OptionsMemberParserLogic","equalsRegex","includes","choices","choice","isNegativeOf","OptionsMemberParserCondition","aliasProp","OptionsInterfaceDeclaration","value","OptionsParserLogic","entries","filter","JSON","stringify","Array","isArray","i","CommandParserLogic"],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { computedOptions } from \"../contexts/options\";\nimport {\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"../plugin-utils/context-helpers\";\nimport type {\n BooleanCommandOption,\n CommandOption,\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport { BooleanInputParserLogic, CommandParameterType } from \"./helpers\";\n\nexport interface DynamicSegmentsParserLogicProps {\n /**\n * The command to generate the dynamic path segments parser logic for. This is used to access the command options and parameters when generating the parser logic for dynamic path segments.\n */\n command: CommandTree;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function DynamicSegmentsParserLogic(\n props: DynamicSegmentsParserLogicProps\n) {\n const { command } = props;\n\n return (\n <For each={command.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type=\"string | undefined\"\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(\n getDynamicPathSegmentName(segment)\n )} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\nexport interface ArgumentsParserLogicProps {\n /**\n * The command to generate the positional parameters parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${appSpecificEnvPrefix}_OPTION_NAME`).\n */\n appSpecificEnvPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function ArgumentsParserLogic(props: ArgumentsParserLogicProps) {\n const { command, appSpecificEnvPrefix, isCaseSensitive } = props;\n\n return (\n <Show when={command.args && command.args.length > 0}>\n <VarDeclaration\n let\n name=\"optionsIndex\"\n type=\"number\"\n initializer={code`Math.max(0, args.slice(${\n command.segments.length + 1\n }).findIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1};`}\n />\n <Spacing />\n <VarDeclaration\n let\n name=\"argsIndex\"\n type=\"number\"\n initializer={code`optionsIndex > ${\n command.segments.length + 1\n } ? ${command.segments.length + 1} : (Math.max(0, args.slice(optionsIndex).findLastIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1});`}\n />\n <Spacing />\n <For each={command.args ?? []} hardline>\n {(arg, index) => (\n <>\n <Show\n when={\n isSetString(arg.env) ||\n arg.default !== undefined ||\n ((arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic)\n }\n fallback={\n <>\n {code`let ${camelCase(arg.name)}!: `}\n <CommandParameterType parameter={arg} />\n {code`; `}\n </>\n }>\n <VarDeclaration\n let\n name={camelCase(arg.name)}\n type={<CommandParameterType parameter={arg} />}\n initializer={\n <>\n <Show when={isSetString(arg.env)}>\n {code`env.${appSpecificEnvPrefix}_${constantCase(String(arg.env))} ?? `}\n </Show>\n <Show\n when={arg.default !== undefined}\n fallback={\n (arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic\n ? code`[]`\n : code`undefined;`\n }>\n {arg.kind === CommandParameterKinds.string\n ? code`\"${arg.default}\"`\n : code`${arg.default}`}\n </Show>\n </>\n }\n />\n </Show>\n <Spacing />\n <IfStatement\n condition={code`argsIndex + ${index} < args.length && argsIndex + ${index} !== optionsIndex`}>\n {code`${camelCase(arg.name)} = `}\n <Show\n when={\n arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number\n }\n fallback={\n <BooleanInputParserLogic\n name={`args[argsIndex + ${index}] `}\n />\n }>\n <Show\n when={\n (arg.kind === CommandParameterKinds.string ||\n arg.kind === CommandParameterKinds.number) &&\n arg.variadic\n }\n fallback={\n <Show\n when={arg.kind === CommandParameterKinds.number}\n fallback={code`args[argsIndex + ${index}]; `}>\n {code`Number(args[argsIndex + ${index}]); `}\n </Show>\n }>\n {code`args.slice(argsIndex + ${\n index\n }, (optionsIndex > argsIndex ? optionsIndex : args.length) - ${\n command.args.length - index\n }).join(\" \").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean)`}\n </Show>\n </Show>\n </IfStatement>\n <Spacing />\n </>\n )}\n </For>\n </Show>\n );\n}\n\n/**\n * The command option interface property.\n */\nexport function OptionsMember({ option }: { option: CommandOption }) {\n const doc = option.description || `The ${option.title} command option.`;\n\n return (\n <>\n <Show when={Boolean(option.name)}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={<CommandParameterType parameter={option} />}\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={<CommandParameterType parameter={option} />}\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === CommandParameterKinds.boolean}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={<CommandParameterType parameter={option} />}\n optional={option.optional}\n />\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserLogicProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * The command option to generate the parser logic for.\n */\n option: CommandOption;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\n/**\n * The command option property parser logic.\n */\nexport function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps) {\n const { name, option, isCaseSensitive } = props;\n\n const equalsRegex = `/^--?(${\n isCaseSensitive || name.length === 1\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})=/`;\n\n return (\n <>\n <Show\n when={\n option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number\n }>\n <Show\n when={\n (option as StringCommandParameter | NumberCommandParameter).variadic\n }>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} ??= []; `}>\n {code`options[\"${name}\"] ??= []; `}\n </Show>\n <hbr />\n <IfStatement\n condition={`${equalsRegex}.test(${\n isCaseSensitive\n ? \"arg\"\n : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === CommandParameterKinds.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n {code` as ${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice => (isSetString(choice) ? `\"${choice}\"` : choice))\n .join(\" | \")} `}\n </Show>\n {code`); `}\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === CommandParameterKinds.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n {code` as ${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice => (isSetString(choice) ? `\"${choice}\"` : choice))\n .join(\" | \")} `}\n </Show>\n {code`); `}\n </ElseIfClause>\n </Show>\n <Show\n when={\n !(option as StringCommandParameter | NumberCommandParameter)\n .variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")`}\n <Show\n when={\n (option as StringCommandParameter).choices &&\n (option as StringCommandParameter).choices!.length > 0\n }>\n {code` as ${(option as StringCommandParameter).choices\n ?.map(choice => `\"${choice}\"`)\n .join(\" | \")}`}\n </Show>\n {code`; `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value`}\n <Show\n when={\n (option as NumberCommandParameter).choices &&\n (option as NumberCommandParameter).choices!.length > 0\n }>\n {code` as ${(option as NumberCommandParameter).choices?.join(\" | \")}`}\n </Show>\n {code`; `}\n </IfStatement>\n </Show>\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show when={option.kind === CommandParameterKinds.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")`}\n <Show\n when={\n (option as StringCommandParameter).choices &&\n (option as StringCommandParameter).choices!.length > 0\n }>\n {code` as ${(option as StringCommandParameter).choices?.map(choice => `\"${choice}\"`).join(\" | \")}`}\n </Show>\n {code`; `}\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value`}\n <Show\n when={\n (option as NumberCommandParameter).choices &&\n (option as NumberCommandParameter).choices!.length > 0\n }>\n {code` as ${(option as NumberCommandParameter).choices?.join(\" | \")}`}\n </Show>\n {code`; `}\n </IfStatement>\n </Show>\n </ElseIfClause>\n <hbr />\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.boolean}>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\").toLowerCase(); `}\n />\n <hbr />\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = `}>\n {code`options[\"${name}\"] = `}\n </Show>\n <BooleanInputParserLogic name=\"value\" />\n </IfStatement>\n <ElseClause>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = true; `}>\n {code`options[\"${name}\"] = true; `}\n </Show>\n </ElseClause>\n <Show when={Boolean((option as BooleanCommandOption).isNegativeOf)}>\n <hbr />\n <Show\n when={\n (option as BooleanCommandOption).isNegativeOf!.includes(\"?\") ||\n (option as BooleanCommandOption).isNegativeOf!.includes(\"-\")\n }\n fallback={code`options.${(option as BooleanCommandOption).isNegativeOf} = false; `}>\n {code`options[\"${(option as BooleanCommandOption).isNegativeOf}\"] = false; `}\n </Show>\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserConditionProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * Aliases for the option, which will also be parsed in the generated code. This will affect how the generated code compares command line arguments to option names and aliases.\n */\n alias?: string[];\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\nexport function OptionsMemberParserCondition(\n props: OptionsMemberParserConditionProps\n) {\n const { name, alias: aliasProp, isCaseSensitive } = props;\n\n return (\n <>\n {code`${\n isCaseSensitive\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`}\n <Show when={aliasProp && aliasProp.length > 0}>\n <For each={aliasProp ?? []}>\n {alias =>\n code` || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`\n }\n </For>\n </Show>\n </>\n );\n}\n\nexport function OptionsInterfaceDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <InterfaceDeclaration export name={`${pascalCase(command.name)}Options`}>\n <For each={Object.values(options.value)} hardline>\n {option => <OptionsMember option={option} />}\n </For>\n </InterfaceDeclaration>\n );\n}\n\nexport interface OptionsParserLogicProps {\n /**\n * The command to generate the options parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${appSpecificEnvPrefix}_OPTION_NAME`).\n */\n appSpecificEnvPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command options parser logic.\n */\nexport function OptionsParserLogic(props: OptionsParserLogicProps) {\n const { command, appSpecificEnvPrefix, isCaseSensitive = false } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <>\n <VarDeclaration\n const\n name=\"options\"\n initializer={code` {\n ${Object.entries(options.value)\n .filter(\n ([, option]) =>\n option.env ||\n option.default !== undefined ||\n ((option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic)\n )\n .map(([name, option]) => {\n if (option.kind === CommandParameterKinds.string) {\n return ` ${\n name.includes(\"?\") || name.includes(\"-\")\n ? `\"${name}\"`\n : `${name}`\n }: ${\n option.env ? `env.${appSpecificEnvPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"[]\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}\"${option.default}\"`\n : \"\"\n }, `;\n } else if (option.kind === CommandParameterKinds.number) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${appSpecificEnvPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default && Array.isArray(option.default)\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"[]\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}${option.default}`\n : \"\"\n }, `;\n } else if (option.kind === CommandParameterKinds.boolean) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env\n ? `env.${appSpecificEnvPrefix}_${option.env} ?? `\n : \"\"\n }${option.default ? \"true\" : \"false\"},`;\n }\n\n return \"\";\n })\n .join(\"\")}\n } as ${pascalCase(command.name)}Options;`}\n />\n <Spacing />\n {code`for (let i = 0; i < args.slice(${\n command.segments.filter(segment => isDynamicPathSegment(segment)).length\n }).length; i++) { `}\n <hbr />\n <VarDeclaration\n const\n name=\"arg\"\n type=\"string\"\n initializer={code` args[i].length > 3 && args[i].startsWith(\"--\")\n ? \\`--\\${args[i].slice(2).replaceAll(\"-\", \"\")${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }}\\`\n : args[i].length > 2 && args[i].startsWith(\"-\")\n ? \\`-\\${args[i].slice(1).replaceAll(\"-\", \"\")}\\`\n : args[i]; `}\n />\n <hbr />\n\n <For each={Object.entries(options.value)} hardline>\n {([name, option], i) => (\n <Show\n when={i === 0}\n fallback={\n <ElseIfClause\n condition={\n <>\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n </>\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </ElseIfClause>\n }>\n <IfStatement\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </IfStatement>\n </Show>\n )}\n </For>\n\n <hbr />\n {code` } `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandParserLogicProps {\n /**\n * The command to generate the parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${appSpecificEnvPrefix}_OPTION_NAME`).\n */\n appSpecificEnvPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.\n */\nexport function CommandParserLogic(props: CommandParserLogicProps) {\n const { command, appSpecificEnvPrefix, isCaseSensitive = false } = props;\n\n return (\n <>\n <DynamicSegmentsParserLogic\n command={command}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n <OptionsParserLogic\n command={command}\n appSpecificEnvPrefix={appSpecificEnvPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n <ArgumentsParserLogic\n command={command}\n appSpecificEnvPrefix={appSpecificEnvPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <Spacing />\n </>\n );\n}\n"],"mappings":"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"}
|