@shell-shock/core 0.6.0 → 0.7.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/index.cjs +2 -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 +111 -10
- package/dist/components/options-parser-logic.cjs.map +1 -1
- package/dist/components/options-parser-logic.d.cts +39 -8
- package/dist/components/options-parser-logic.d.cts.map +1 -1
- package/dist/components/options-parser-logic.d.mts +32 -1
- package/dist/components/options-parser-logic.d.mts.map +1 -1
- package/dist/components/options-parser-logic.mjs +110 -11
- package/dist/components/options-parser-logic.mjs.map +1 -1
- package/dist/components/usage.cjs +6 -5
- package/dist/components/usage.cjs.map +1 -1
- package/dist/components/usage.d.cts +2 -4
- package/dist/components/usage.d.cts.map +1 -1
- package/dist/components/usage.d.mts +2 -4
- package/dist/components/usage.d.mts.map +1 -1
- package/dist/components/usage.mjs +6 -5
- package/dist/components/usage.mjs.map +1 -1
- package/dist/helpers/persistence.cjs +48 -3
- package/dist/helpers/persistence.cjs.map +1 -1
- package/dist/helpers/persistence.mjs +48 -3
- package/dist/helpers/persistence.mjs.map +1 -1
- package/dist/helpers/resolve-command.cjs +90 -29
- package/dist/helpers/resolve-command.cjs.map +1 -1
- package/dist/helpers/resolve-command.mjs +91 -30
- package/dist/helpers/resolve-command.mjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/types/command.d.cts +272 -7
- package/dist/types/command.d.cts.map +1 -1
- package/dist/types/command.d.mts +272 -7
- package/dist/types/command.d.mts.map +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.mts +2 -2
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CommandTree } from "../types/command.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _alloy_js_core0 from "@alloy-js/core";
|
|
3
3
|
import { MarkdownFileProps } from "@powerlines/plugin-alloy/markdown/components/markdown-file";
|
|
4
4
|
|
|
5
5
|
//#region src/components/docs.d.ts
|
|
@@ -12,7 +12,7 @@ interface CommandOptionsDocsProps {
|
|
|
12
12
|
/**
|
|
13
13
|
* Generates the options markdown documentation for a command.
|
|
14
14
|
*/
|
|
15
|
-
declare function CommandOptionsDocs(props: CommandOptionsDocsProps):
|
|
15
|
+
declare function CommandOptionsDocs(props: CommandOptionsDocsProps): _alloy_js_core0.Children;
|
|
16
16
|
interface CommandDocsUsageExampleProps {
|
|
17
17
|
/**
|
|
18
18
|
* The package manager to generate the usage example for.
|
|
@@ -31,7 +31,7 @@ interface CommandDocsUsageExampleProps {
|
|
|
31
31
|
/**
|
|
32
32
|
* Generates the markdown documentation for a command.
|
|
33
33
|
*/
|
|
34
|
-
declare function CommandDocsUsageExample(props: CommandDocsUsageExampleProps):
|
|
34
|
+
declare function CommandDocsUsageExample(props: CommandDocsUsageExampleProps): _alloy_js_core0.Children;
|
|
35
35
|
interface CommandDocsProps {
|
|
36
36
|
/**
|
|
37
37
|
* The heading level offset to apply to the generated documentation.
|
|
@@ -56,7 +56,7 @@ interface CommandDocsProps {
|
|
|
56
56
|
/**
|
|
57
57
|
* Generates the markdown documentation for a command.
|
|
58
58
|
*/
|
|
59
|
-
declare function CommandDocs(props: CommandDocsProps):
|
|
59
|
+
declare function CommandDocs(props: CommandDocsProps): _alloy_js_core0.Children;
|
|
60
60
|
interface CommandDocsFileProps extends Partial<MarkdownFileProps> {
|
|
61
61
|
/**
|
|
62
62
|
* The heading level offset to apply to the generated documentation.
|
|
@@ -75,7 +75,7 @@ interface CommandDocsFileProps extends Partial<MarkdownFileProps> {
|
|
|
75
75
|
/**
|
|
76
76
|
* Generates the markdown documentation file for a command.
|
|
77
77
|
*/
|
|
78
|
-
declare function CommandDocsFile(props: CommandDocsFileProps):
|
|
78
|
+
declare function CommandDocsFile(props: CommandDocsFileProps): _alloy_js_core0.Children;
|
|
79
79
|
//#endregion
|
|
80
80
|
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps };
|
|
81
81
|
//# sourceMappingURL=docs.d.cts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CommandTree } from "../types/command.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _alloy_js_core7 from "@alloy-js/core";
|
|
3
3
|
import { MarkdownFileProps } from "@powerlines/plugin-alloy/markdown/components/markdown-file";
|
|
4
4
|
|
|
5
5
|
//#region src/components/docs.d.ts
|
|
@@ -12,7 +12,7 @@ interface CommandOptionsDocsProps {
|
|
|
12
12
|
/**
|
|
13
13
|
* Generates the options markdown documentation for a command.
|
|
14
14
|
*/
|
|
15
|
-
declare function CommandOptionsDocs(props: CommandOptionsDocsProps):
|
|
15
|
+
declare function CommandOptionsDocs(props: CommandOptionsDocsProps): _alloy_js_core7.Children;
|
|
16
16
|
interface CommandDocsUsageExampleProps {
|
|
17
17
|
/**
|
|
18
18
|
* The package manager to generate the usage example for.
|
|
@@ -31,7 +31,7 @@ interface CommandDocsUsageExampleProps {
|
|
|
31
31
|
/**
|
|
32
32
|
* Generates the markdown documentation for a command.
|
|
33
33
|
*/
|
|
34
|
-
declare function CommandDocsUsageExample(props: CommandDocsUsageExampleProps):
|
|
34
|
+
declare function CommandDocsUsageExample(props: CommandDocsUsageExampleProps): _alloy_js_core7.Children;
|
|
35
35
|
interface CommandDocsProps {
|
|
36
36
|
/**
|
|
37
37
|
* The heading level offset to apply to the generated documentation.
|
|
@@ -56,7 +56,7 @@ interface CommandDocsProps {
|
|
|
56
56
|
/**
|
|
57
57
|
* Generates the markdown documentation for a command.
|
|
58
58
|
*/
|
|
59
|
-
declare function CommandDocs(props: CommandDocsProps):
|
|
59
|
+
declare function CommandDocs(props: CommandDocsProps): _alloy_js_core7.Children;
|
|
60
60
|
interface CommandDocsFileProps extends Partial<MarkdownFileProps> {
|
|
61
61
|
/**
|
|
62
62
|
* The heading level offset to apply to the generated documentation.
|
|
@@ -75,7 +75,7 @@ interface CommandDocsFileProps extends Partial<MarkdownFileProps> {
|
|
|
75
75
|
/**
|
|
76
76
|
* Generates the markdown documentation file for a command.
|
|
77
77
|
*/
|
|
78
|
-
declare function CommandDocsFile(props: CommandDocsFileProps):
|
|
78
|
+
declare function CommandDocsFile(props: CommandDocsFileProps): _alloy_js_core7.Children;
|
|
79
79
|
//#endregion
|
|
80
80
|
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps };
|
|
81
81
|
//# sourceMappingURL=docs.d.mts.map
|
|
@@ -6,10 +6,12 @@ exports.CommandDocs = require_components_docs.CommandDocs;
|
|
|
6
6
|
exports.CommandDocsFile = require_components_docs.CommandDocsFile;
|
|
7
7
|
exports.CommandDocsUsageExample = require_components_docs.CommandDocsUsageExample;
|
|
8
8
|
exports.CommandOptionsDocs = require_components_docs.CommandOptionsDocs;
|
|
9
|
+
exports.CommandParserLogic = require_components_options_parser_logic.CommandParserLogic;
|
|
9
10
|
exports.DynamicPathSegmentsParserLogic = require_components_options_parser_logic.DynamicPathSegmentsParserLogic;
|
|
10
11
|
exports.OptionsInterfaceDeclaration = require_components_options_parser_logic.OptionsInterfaceDeclaration;
|
|
11
12
|
exports.OptionsMember = require_components_options_parser_logic.OptionsMember;
|
|
12
13
|
exports.OptionsMemberParserCondition = require_components_options_parser_logic.OptionsMemberParserCondition;
|
|
13
14
|
exports.OptionsMemberParserLogic = require_components_options_parser_logic.OptionsMemberParserLogic;
|
|
14
15
|
exports.OptionsParserLogic = require_components_options_parser_logic.OptionsParserLogic;
|
|
16
|
+
exports.PositionalParametersParserLogic = require_components_options_parser_logic.PositionalParametersParserLogic;
|
|
15
17
|
exports.Usage = require_components_usage.Usage;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps } from "./docs.cjs";
|
|
2
|
-
import { DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps } from "./options-parser-logic.cjs";
|
|
2
|
+
import { CommandParserLogic, CommandParserLogicProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, PositionalParametersParserLogic, PositionalParametersParserLogicProps } from "./options-parser-logic.cjs";
|
|
3
3
|
import { Usage, UsageProps } from "./usage.cjs";
|
|
4
|
-
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, Usage, UsageProps };
|
|
4
|
+
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps, CommandParserLogic, CommandParserLogicProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, PositionalParametersParserLogic, PositionalParametersParserLogicProps, Usage, UsageProps };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps } from "./docs.mjs";
|
|
2
|
-
import { DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps } from "./options-parser-logic.mjs";
|
|
2
|
+
import { CommandParserLogic, CommandParserLogicProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, PositionalParametersParserLogic, PositionalParametersParserLogicProps } from "./options-parser-logic.mjs";
|
|
3
3
|
import { Usage, UsageProps } from "./usage.mjs";
|
|
4
|
-
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, Usage, UsageProps };
|
|
4
|
+
export { CommandDocs, CommandDocsFile, CommandDocsFileProps, CommandDocsProps, CommandDocsUsageExample, CommandDocsUsageExampleProps, CommandOptionsDocs, CommandOptionsDocsProps, CommandParserLogic, CommandParserLogicProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, PositionalParametersParserLogic, PositionalParametersParserLogicProps, Usage, UsageProps };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Usage } from "./usage.mjs";
|
|
2
2
|
import { CommandDocs, CommandDocsFile, CommandDocsUsageExample, CommandOptionsDocs } from "./docs.mjs";
|
|
3
|
-
import { DynamicPathSegmentsParserLogic, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserLogic, OptionsParserLogic } from "./options-parser-logic.mjs";
|
|
3
|
+
import { CommandParserLogic, DynamicPathSegmentsParserLogic, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserLogic, OptionsParserLogic, PositionalParametersParserLogic } from "./options-parser-logic.mjs";
|
|
4
4
|
|
|
5
|
-
export { CommandDocs, CommandDocsFile, CommandDocsUsageExample, CommandOptionsDocs, DynamicPathSegmentsParserLogic, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserLogic, OptionsParserLogic, Usage };
|
|
5
|
+
export { CommandDocs, CommandDocsFile, CommandDocsUsageExample, CommandOptionsDocs, CommandParserLogic, DynamicPathSegmentsParserLogic, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserLogic, OptionsParserLogic, PositionalParametersParserLogic, Usage };
|
|
@@ -55,6 +55,61 @@ function DynamicPathSegmentsParserLogic(props) {
|
|
|
55
55
|
})
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
+
function PositionalParametersParserLogic(props) {
|
|
59
|
+
const { command, envPrefix } = props;
|
|
60
|
+
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
|
|
61
|
+
get each() {
|
|
62
|
+
return command.params ?? [];
|
|
63
|
+
},
|
|
64
|
+
hardline: true,
|
|
65
|
+
children: (param) => [
|
|
66
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
67
|
+
"let": true,
|
|
68
|
+
get name() {
|
|
69
|
+
return param.name;
|
|
70
|
+
},
|
|
71
|
+
get type() {
|
|
72
|
+
return `${param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.boolean ? "boolean" : param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number ? "number" : "string"}${(param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? "[]" : ""}${param.optional ? " | undefined" : ""}`;
|
|
73
|
+
},
|
|
74
|
+
get initializer() {
|
|
75
|
+
return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`env.${envPrefix}_${param.env} ?? `), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
76
|
+
get when() {
|
|
77
|
+
return param.default !== void 0;
|
|
78
|
+
},
|
|
79
|
+
get fallback() {
|
|
80
|
+
return (param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? __alloy_js_core.code`[]` : __alloy_js_core.code`undefined;`;
|
|
81
|
+
},
|
|
82
|
+
get children() {
|
|
83
|
+
return param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string ? __alloy_js_core.code`"${param.default}"` : __alloy_js_core.code`${param.default}`;
|
|
84
|
+
}
|
|
85
|
+
})];
|
|
86
|
+
}
|
|
87
|
+
}),
|
|
88
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
89
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
90
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
91
|
+
get condition() {
|
|
92
|
+
return __alloy_js_core.code`args.length > ${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1} && args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}]`;
|
|
93
|
+
},
|
|
94
|
+
get children() {
|
|
95
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
96
|
+
get when() {
|
|
97
|
+
return param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
|
|
98
|
+
},
|
|
99
|
+
get fallback() {
|
|
100
|
+
return __alloy_js_core.code`${param.name} = args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}];`;
|
|
101
|
+
},
|
|
102
|
+
get children() {
|
|
103
|
+
return __alloy_js_core.code`${param.name} = ${(param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? `args.slice(${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1})` : `args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}]`}${param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number ? ".map(Number).filter(value => !Number.isNaN(value))" : ""};`;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}),
|
|
108
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
109
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
110
|
+
]
|
|
111
|
+
})];
|
|
112
|
+
}
|
|
58
113
|
/**
|
|
59
114
|
* The command option interface property.
|
|
60
115
|
*/
|
|
@@ -130,7 +185,7 @@ function OptionsMember({ option }) {
|
|
|
130
185
|
*/
|
|
131
186
|
function OptionsMemberParserLogic(props) {
|
|
132
187
|
const { name, option, isCaseSensitive } = props;
|
|
133
|
-
const equalsRegex = `/^--?(${isCaseSensitive
|
|
188
|
+
const equalsRegex = `/^--?(${isCaseSensitive || name.length === 1 ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}${option.alias && option.alias.length > 0 ? "|" : ""}${option.alias?.map((a) => (isCaseSensitive || name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")) === "?" ? "\\?" : isCaseSensitive || name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})=/`;
|
|
134
189
|
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
135
190
|
get when() {
|
|
136
191
|
return option.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || option.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
|
|
@@ -151,7 +206,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
151
206
|
}),
|
|
152
207
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
153
208
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
154
|
-
condition: `${equalsRegex}.test(
|
|
209
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
155
210
|
get children() {
|
|
156
211
|
return [
|
|
157
212
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
@@ -213,7 +268,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
213
268
|
get children() {
|
|
214
269
|
return [
|
|
215
270
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
216
|
-
condition: `${equalsRegex}.test(
|
|
271
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
217
272
|
get children() {
|
|
218
273
|
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
219
274
|
get when() {
|
|
@@ -314,7 +369,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
314
369
|
get children() {
|
|
315
370
|
return [
|
|
316
371
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
317
|
-
condition: `${equalsRegex}.test(
|
|
372
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
318
373
|
get children() {
|
|
319
374
|
return [
|
|
320
375
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
@@ -366,15 +421,15 @@ function OptionsMemberParserLogic(props) {
|
|
|
366
421
|
})];
|
|
367
422
|
}
|
|
368
423
|
function OptionsMemberParserCondition(props) {
|
|
369
|
-
const { name, alias, isCaseSensitive } = props;
|
|
370
|
-
return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code
|
|
424
|
+
const { name, alias: aliasProp, isCaseSensitive } = props;
|
|
425
|
+
return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`${isCaseSensitive ? "arg.startsWith(\"--" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}" || ${isCaseSensitive ? "arg.startsWith(\"-" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
371
426
|
get when() {
|
|
372
|
-
return
|
|
427
|
+
return aliasProp && aliasProp.length > 0;
|
|
373
428
|
},
|
|
374
429
|
get children() {
|
|
375
430
|
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
|
|
376
|
-
each:
|
|
377
|
-
children: (
|
|
431
|
+
each: aliasProp ?? [],
|
|
432
|
+
children: (alias) => __alloy_js_core.code` || ${isCaseSensitive || alias.length === 1 ? "arg.startsWith(\"--" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive || alias.length === 1 ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}" || ${isCaseSensitive || alias.length === 1 ? "arg.startsWith(\"-" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive || alias.length === 1 ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`
|
|
378
433
|
});
|
|
379
434
|
}
|
|
380
435
|
})];
|
|
@@ -428,7 +483,7 @@ function OptionsParserLogic(props) {
|
|
|
428
483
|
name: "arg",
|
|
429
484
|
type: "string",
|
|
430
485
|
initializer: __alloy_js_core.code` args[i].length > 3 && args[i].startsWith("--")
|
|
431
|
-
? \`--\${args[i].slice(2).replaceAll("-", "")${isCaseSensitive ? "" : ".toLowerCase()"}}\`
|
|
486
|
+
? \`--\${args[i].slice(2).replaceAll("-", "")${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}}\`
|
|
432
487
|
: args[i].length > 2 && args[i].startsWith("-")
|
|
433
488
|
? \`-\${args[i].slice(1).replaceAll("-", "")}\`
|
|
434
489
|
: args[i]; `
|
|
@@ -488,12 +543,58 @@ function OptionsParserLogic(props) {
|
|
|
488
543
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
489
544
|
];
|
|
490
545
|
}
|
|
546
|
+
/**
|
|
547
|
+
* The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.
|
|
548
|
+
*/
|
|
549
|
+
function CommandParserLogic(props) {
|
|
550
|
+
const { command, envPrefix, isCaseSensitive = false } = props;
|
|
551
|
+
return [
|
|
552
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(DynamicPathSegmentsParserLogic, { get path() {
|
|
553
|
+
return command.path;
|
|
554
|
+
} }),
|
|
555
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
556
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
557
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
558
|
+
"const": true,
|
|
559
|
+
name: "lastSegmentIndex",
|
|
560
|
+
type: "number",
|
|
561
|
+
get initializer() {
|
|
562
|
+
return (0, __alloy_js_core_jsx_runtime.memo)(() => !!require_plugin_utils_context_helpers.isDynamicPathSegment(command.path.segments[command.path.segments.length - 1]))() ? `args.some(arg => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) ? args.findIndex(arg => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) : args.length - ${command.params.length + 1}` : `args.reduce((ret, arg, index) => {
|
|
563
|
+
if (ret === -1 && (index < args.findIndex(a => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(a${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) || !args.some(a => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(a${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}))) && arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${command.path.segments[command.path.segments.length - 1]?.toLowerCase()}") {
|
|
564
|
+
return index;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
return ret;
|
|
568
|
+
}, -1); `;
|
|
569
|
+
}
|
|
570
|
+
}),
|
|
571
|
+
__alloy_js_core.code`
|
|
572
|
+
`,
|
|
573
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
574
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
575
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(OptionsParserLogic, {
|
|
576
|
+
command,
|
|
577
|
+
envPrefix,
|
|
578
|
+
isCaseSensitive
|
|
579
|
+
}),
|
|
580
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
581
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
582
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(PositionalParametersParserLogic, {
|
|
583
|
+
command,
|
|
584
|
+
envPrefix
|
|
585
|
+
}),
|
|
586
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
587
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
588
|
+
];
|
|
589
|
+
}
|
|
491
590
|
|
|
492
591
|
//#endregion
|
|
592
|
+
exports.CommandParserLogic = CommandParserLogic;
|
|
493
593
|
exports.DynamicPathSegmentsParserLogic = DynamicPathSegmentsParserLogic;
|
|
494
594
|
exports.OptionsInterfaceDeclaration = OptionsInterfaceDeclaration;
|
|
495
595
|
exports.OptionsMember = OptionsMember;
|
|
496
596
|
exports.OptionsMemberParserCondition = OptionsMemberParserCondition;
|
|
497
597
|
exports.OptionsMemberParserLogic = OptionsMemberParserLogic;
|
|
498
598
|
exports.OptionsParserLogic = OptionsParserLogic;
|
|
599
|
+
exports.PositionalParametersParserLogic = PositionalParametersParserLogic;
|
|
499
600
|
//# sourceMappingURL=options-parser-logic.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","ReflectionKind","camelCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","DynamicPathSegmentsParserLogic","props","path","_$createComponent","each","segments","children","segment","index","when","name","type","dynamics","variadic","optional","initializer","_$memo","default","_$createIntrinsic","condition","OptionsMember","option","doc","description","title","Boolean","kind","string","number","boolean","OptionsMemberParserLogic","isCaseSensitive","equalsRegex","length","toLowerCase","alias","map","a","join","includes","fallback","isNegativeOf","OptionsMemberParserCondition","OptionsInterfaceDeclaration","command","options","Object","values","value","hardline","OptionsParserLogic","envPrefix","entries","env","undefined","JSON","stringify","filter","i"],"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 { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { camelCase } from \"@stryke/string-format/camel-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 CommandTreePath,\n NumberCommandOption,\n StringCommandOption\n} from \"../types/command\";\n\nexport interface DynamicPathSegmentsParserLogicProps {\n /**\n * The command path to generate the dynamic path segments parser logic for.\n */\n path: CommandTreePath;\n}\n\nexport function DynamicPathSegmentsParserLogic(\n props: DynamicPathSegmentsParserLogicProps\n) {\n const { path } = props;\n\n return (\n <For each={path.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type={`${\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic\n ? \"string[]\"\n : \"string\"\n }${\n path.dynamics[getDynamicPathSegmentName(segment)]?.optional\n ? \" | undefined\"\n : \"\"\n }`}\n initializer={\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic ? (\n code`[]`\n ) : (\n <>\n <Show\n when={isSetString(\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n )}>\n {code`\"${\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n }\"`}\n </Show>\n {code`undefined;`}\n </>\n )\n }\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(getDynamicPathSegmentName(segment))} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\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 === ReflectionKind.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as StringCommandOption).variadic ? \"string[]\" : \"string\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as NumberCommandOption).variadic ? \"number[]\" : \"number\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.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 ? name : name.toLowerCase()\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive && name.length > 1 ? a : a.toLowerCase()) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive && name.length > 1\n ? a\n : a.toLowerCase()\n )\n .join(\"|\")})=/`;\n\n return (\n <>\n <Show\n when={\n option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number\n }>\n <Show\n when={(option as StringCommandOption | NumberCommandOption).variadic}>\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(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\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 === ReflectionKind.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.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 === ReflectionKind.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.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 StringCommandOption | NumberCommandOption).variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\n <Show when={option.kind === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.boolean}>\n <IfStatement\n condition={`${equalsRegex}.test(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\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 {code` = value !== \"false\" && value !== \"f\" && value !== \"no\" && value !== \"n\" && value !== \"0\" && value !== \"off\" && value !== \"disable\" && value !== \"disabled\"; `}\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, isCaseSensitive } = props;\n\n return (\n <>\n {code`arg${isCaseSensitive ? \"\" : \".toLowerCase()\"}.startsWith(\"--${\n isCaseSensitive ? name : name.toLowerCase()\n }=\") || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"} === \"--${\n isCaseSensitive ? name : name.toLowerCase()\n }\" || arg.startsWith(\"-${name}=\") || arg === \"-${name}\"`}\n <Show when={alias && alias.length > 0}>\n <For each={alias ?? []}>\n {a =>\n code` || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"}.startsWith(\"--${\n isCaseSensitive || a.length === 1 ? a : a.toLowerCase()\n }=\") || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"} === \"--${\n isCaseSensitive || a.length === 1 ? a : a.toLowerCase()\n }\" || arg.startsWith(\"-${a}=\") || arg === \"-${a}\"`\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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 <hbr />\n <hbr />\n {code`for (let i = 0; i < args.slice(${\n command.path.segments.filter(segment => isDynamicPathSegment(segment))\n .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 ? \"\" : \".toLowerCase()\"\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","ReflectionKind","camelCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","DynamicPathSegmentsParserLogic","props","path","_$createComponent","each","segments","children","segment","index","when","name","type","dynamics","variadic","optional","initializer","_$memo","default","_$createIntrinsic","condition","PositionalParametersParserLogic","command","envPrefix","params","hardline","param","kind","boolean","number","string","env","undefined","fallback","filter","length","OptionsMember","option","doc","description","title","Boolean","OptionsMemberParserLogic","isCaseSensitive","equalsRegex","toLowerCase","replaceAll","alias","map","a","join","includes","isNegativeOf","OptionsMemberParserCondition","aliasProp","OptionsInterfaceDeclaration","options","Object","values","value","OptionsParserLogic","entries","JSON","stringify","i","CommandParserLogic","keys","key"],"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 { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { camelCase } from \"@stryke/string-format/camel-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 CommandTreePath,\n NumberCommandOption,\n StringCommandOption\n} from \"../types/command\";\n\nexport interface DynamicPathSegmentsParserLogicProps {\n /**\n * The command path to generate the dynamic path segments parser logic for.\n */\n path: CommandTreePath;\n}\n\nexport function DynamicPathSegmentsParserLogic(\n props: DynamicPathSegmentsParserLogicProps\n) {\n const { path } = props;\n\n return (\n <For each={path.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type={`${\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic\n ? \"string[]\"\n : \"string\"\n }${\n path.dynamics[getDynamicPathSegmentName(segment)]?.optional\n ? \" | undefined\"\n : \"\"\n }`}\n initializer={\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic ? (\n code`[]`\n ) : (\n <>\n <Show\n when={isSetString(\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n )}>\n {code`\"${\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n }\"`}\n </Show>\n {code`undefined;`}\n </>\n )\n }\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(getDynamicPathSegmentName(segment))} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\nexport interface PositionalParametersParserLogicProps {\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\nexport function PositionalParametersParserLogic(\n props: PositionalParametersParserLogicProps\n) {\n const { command, envPrefix } = props;\n\n return (\n <>\n <For each={command.params ?? []} hardline>\n {param => (\n <>\n <VarDeclaration\n let\n name={param.name}\n type={`${\n param.kind === ReflectionKind.boolean\n ? \"boolean\"\n : param.kind === ReflectionKind.number\n ? \"number\"\n : \"string\"\n }${\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? \"[]\"\n : \"\"\n }${param.optional ? \" | undefined\" : \"\"}`}\n initializer={\n <>\n {code`env.${envPrefix}_${param.env} ?? `}\n <Show\n when={param.default !== undefined}\n fallback={\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? code`[]`\n : code`undefined;`\n }>\n {param.kind === ReflectionKind.string\n ? code`\"${param.default}\"`\n : code`${param.default}`}\n </Show>\n </>\n }\n />\n <hbr />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n } && args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }]`}>\n <Show\n when={\n param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number\n }\n fallback={code`${param.name} = args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }];`}>\n {code`${param.name} = ${\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? `args.slice(${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n })`\n : `args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }]`\n }${\n param.kind === ReflectionKind.number\n ? \".map(Number).filter(value => !Number.isNaN(value))\"\n : \"\"\n };`}\n </Show>\n </IfStatement>\n <hbr />\n <hbr />\n </>\n )}\n </For>\n </>\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 === ReflectionKind.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as StringCommandOption).variadic ? \"string[]\" : \"string\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as NumberCommandOption).variadic ? \"number[]\" : \"number\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.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 === ReflectionKind.string ||\n option.kind === ReflectionKind.number\n }>\n <Show\n when={(option as StringCommandOption | NumberCommandOption).variadic}>\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 === ReflectionKind.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.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 === ReflectionKind.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.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 StringCommandOption | NumberCommandOption).variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <Show when={option.kind === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 {code` = value !== \"false\" && value !== \"f\" && value !== \"no\" && value !== \"n\" && value !== \"0\" && value !== \"off\" && value !== \"disable\" && value !== \"disabled\"; `}\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 === ReflectionKind.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 === ReflectionKind.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 === ReflectionKind.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 <hbr />\n <hbr />\n {code`for (let i = 0; i < args.slice(${\n command.path.segments.filter(segment => isDynamicPathSegment(segment))\n .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 <DynamicPathSegmentsParserLogic path={command.path} />\n <hbr />\n <hbr />\n <VarDeclaration\n const\n name=\"lastSegmentIndex\"\n type=\"number\"\n initializer={\n isDynamicPathSegment(\n command.path.segments[command.path.segments.length - 1]!\n )\n ? `args.some(arg => /^--?(${Object.keys(command.options)\n .map(key =>\n key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})(=.*)?$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) ? args.findIndex(arg => /^--?(${Object.keys(command.options)\n .map(key =>\n key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})(=.*)?$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) : args.length - ${command.params.length + 1}`\n : `args.reduce((ret, arg, index) => {\n if (ret === -1 && (index < args.findIndex(a => /^--?(${Object.keys(\n command.options\n )\n .map(key => key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\"))\n .join(\"|\")})(=.*)?$/.test(a${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) || !args.some(a => /^--?(${Object.keys(command.options)\n .map(key => key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\"))\n .join(\"|\")})(=.*)?$/.test(a${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) && arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${command.path.segments[\n command.path.segments.length - 1\n ]?.toLowerCase()}\") {\n return index;\n }\n\n return ret;\n }, -1); `\n }\n />\n {code`\n `}\n <hbr />\n <hbr />\n <OptionsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <hbr />\n <hbr />\n <PositionalParametersParserLogic\n command={command}\n envPrefix={envPrefix}\n />\n <hbr />\n <hbr />\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CommandOption, CommandTree, CommandTreePath } from "../types/command.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _alloy_js_core4 from "@alloy-js/core";
|
|
3
3
|
|
|
4
4
|
//#region src/components/options-parser-logic.d.ts
|
|
5
5
|
interface DynamicPathSegmentsParserLogicProps {
|
|
@@ -8,7 +8,18 @@ interface DynamicPathSegmentsParserLogicProps {
|
|
|
8
8
|
*/
|
|
9
9
|
path: CommandTreePath;
|
|
10
10
|
}
|
|
11
|
-
declare function DynamicPathSegmentsParserLogic(props: DynamicPathSegmentsParserLogicProps):
|
|
11
|
+
declare function DynamicPathSegmentsParserLogic(props: DynamicPathSegmentsParserLogicProps): _alloy_js_core4.Children;
|
|
12
|
+
interface PositionalParametersParserLogicProps {
|
|
13
|
+
/**
|
|
14
|
+
* The command to generate the positional parameters parser logic for.
|
|
15
|
+
*/
|
|
16
|
+
command: CommandTree;
|
|
17
|
+
/**
|
|
18
|
+
* 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`).
|
|
19
|
+
*/
|
|
20
|
+
envPrefix: string;
|
|
21
|
+
}
|
|
22
|
+
declare function PositionalParametersParserLogic(props: PositionalParametersParserLogicProps): _alloy_js_core4.Children;
|
|
12
23
|
/**
|
|
13
24
|
* The command option interface property.
|
|
14
25
|
*/
|
|
@@ -16,7 +27,7 @@ declare function OptionsMember({
|
|
|
16
27
|
option
|
|
17
28
|
}: {
|
|
18
29
|
option: CommandOption;
|
|
19
|
-
}):
|
|
30
|
+
}): _alloy_js_core4.Children;
|
|
20
31
|
interface OptionsMemberParserLogicProps {
|
|
21
32
|
/**
|
|
22
33
|
* The option name to generate the parser logic for.
|
|
@@ -36,7 +47,7 @@ interface OptionsMemberParserLogicProps {
|
|
|
36
47
|
/**
|
|
37
48
|
* The command option property parser logic.
|
|
38
49
|
*/
|
|
39
|
-
declare function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps):
|
|
50
|
+
declare function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps): _alloy_js_core4.Children;
|
|
40
51
|
interface OptionsMemberParserConditionProps {
|
|
41
52
|
/**
|
|
42
53
|
* The option name to generate the parser logic for.
|
|
@@ -53,10 +64,10 @@ interface OptionsMemberParserConditionProps {
|
|
|
53
64
|
*/
|
|
54
65
|
isCaseSensitive: boolean;
|
|
55
66
|
}
|
|
56
|
-
declare function OptionsMemberParserCondition(props: OptionsMemberParserConditionProps):
|
|
67
|
+
declare function OptionsMemberParserCondition(props: OptionsMemberParserConditionProps): _alloy_js_core4.Children;
|
|
57
68
|
declare function OptionsInterfaceDeclaration(props: {
|
|
58
69
|
command: CommandTree;
|
|
59
|
-
}):
|
|
70
|
+
}): _alloy_js_core4.Children;
|
|
60
71
|
interface OptionsParserLogicProps {
|
|
61
72
|
/**
|
|
62
73
|
* The command to generate the options parser logic for.
|
|
@@ -76,7 +87,27 @@ interface OptionsParserLogicProps {
|
|
|
76
87
|
/**
|
|
77
88
|
* The command options parser logic.
|
|
78
89
|
*/
|
|
79
|
-
declare function OptionsParserLogic(props: OptionsParserLogicProps):
|
|
90
|
+
declare function OptionsParserLogic(props: OptionsParserLogicProps): _alloy_js_core4.Children;
|
|
91
|
+
interface CommandParserLogicProps {
|
|
92
|
+
/**
|
|
93
|
+
* The command to generate the parser logic for.
|
|
94
|
+
*/
|
|
95
|
+
command: CommandTree;
|
|
96
|
+
/**
|
|
97
|
+
* 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`).
|
|
98
|
+
*/
|
|
99
|
+
envPrefix: string;
|
|
100
|
+
/**
|
|
101
|
+
* 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.
|
|
102
|
+
*
|
|
103
|
+
* @defaultValue false
|
|
104
|
+
*/
|
|
105
|
+
isCaseSensitive?: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.
|
|
109
|
+
*/
|
|
110
|
+
declare function CommandParserLogic(props: CommandParserLogicProps): _alloy_js_core4.Children;
|
|
80
111
|
//#endregion
|
|
81
|
-
export { DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps };
|
|
112
|
+
export { CommandParserLogic, CommandParserLogicProps, DynamicPathSegmentsParserLogic, DynamicPathSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps, PositionalParametersParserLogic, PositionalParametersParserLogicProps };
|
|
82
113
|
//# sourceMappingURL=options-parser-logic.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options-parser-logic.d.cts","names":[],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":[],"mappings":";;;;UA6CiB,mCAAA;;;AAAjB;EAOgB,IAAA,EAHR,eAGQ;
|
|
1
|
+
{"version":3,"file":"options-parser-logic.d.cts","names":[],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":[],"mappings":";;;;UA6CiB,mCAAA;;;AAAjB;EAOgB,IAAA,EAHR,eAGQ;AAoDhB;AAYgB,iBAhEA,8BAAA,CAiEP,KAAA,EAhEA,mCAgEoC,CAAA,EAhED,eAAA,CAAA,QAgEC;AAmG7B,UAhHC,oCAAA,CAgHY;EAAG;;;EAAmC,OAAA,EA5GxD,WA4GwD;EAuClD;AAsBjB;AAuKA;EAmBgB,SAAA,EAAA,MAAA;AAmEhB;AAciB,iBA5aD,+BAAA,CAgbM,KAAA,EA/ab,oCA+aa,CAAA,EA/auB,eAAA,CAAA,QA+avB;AAkBtB;AA8HA;AAsBA;iBAlfgB,aAAA;;;UAAoC;IAAa,eAAA,CAAE;UAuClD,6BAAA;;;;;;;;UASP;;;;;;;;;;;iBAaM,wBAAA,QAAgC,gCAA6B,eAAA,CAAA;UAuK5D,iCAAA;;;;;;;;;;;;;;;;iBAmBD,4BAAA,QACP,oCAAiC,eAAA,CAAA;iBAkE1B,2BAAA;WAA8C;IAAW,eAAA,CAAE;UAc1D,uBAAA;;;;WAIN;;;;;;;;;;;;;;;iBAkBK,kBAAA,QAA0B,0BAAuB,eAAA,CAAA;UA8HhD,uBAAA;;;;WAIN;;;;;;;;;;;;;;;iBAkBK,kBAAA,QAA0B,0BAAuB,eAAA,CAAA"}
|