@shell-shock/preset-script 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/args-parser-logic.cjs +678 -0
- package/dist/components/args-parser-logic.cjs.map +1 -0
- package/dist/components/args-parser-logic.d.cts +45 -0
- package/dist/components/args-parser-logic.d.cts.map +1 -0
- package/dist/components/args-parser-logic.d.mts +45 -0
- package/dist/components/args-parser-logic.d.mts.map +1 -0
- package/dist/components/args-parser-logic.mjs +672 -0
- package/dist/components/args-parser-logic.mjs.map +1 -0
- package/dist/components/bin-entry.cjs +188 -0
- package/dist/components/bin-entry.cjs.map +1 -0
- package/dist/components/{entry/bin.d.cts → bin-entry.d.cts} +9 -3
- package/dist/components/bin-entry.d.cts.map +1 -0
- package/dist/components/{entry/bin.d.mts → bin-entry.d.mts} +9 -3
- package/dist/components/bin-entry.d.mts.map +1 -0
- package/dist/components/bin-entry.mjs +185 -0
- package/dist/components/bin-entry.mjs.map +1 -0
- package/dist/components/command-entry.cjs +162 -0
- package/dist/components/command-entry.cjs.map +1 -0
- package/dist/components/command-entry.d.cts +24 -0
- package/dist/components/command-entry.d.cts.map +1 -0
- package/dist/components/command-entry.d.mts +24 -0
- package/dist/components/command-entry.d.mts.map +1 -0
- package/dist/components/command-entry.mjs +158 -0
- package/dist/components/command-entry.mjs.map +1 -0
- package/dist/components/command-router.cjs +129 -74
- package/dist/components/command-router.cjs.map +1 -1
- package/dist/components/command-router.d.cts +13 -4
- package/dist/components/command-router.d.cts.map +1 -0
- package/dist/components/command-router.d.mts +13 -4
- package/dist/components/command-router.d.mts.map +1 -0
- package/dist/components/command-router.mjs +128 -73
- package/dist/components/command-router.mjs.map +1 -1
- package/dist/components/console-builtin.cjs +2086 -0
- package/dist/components/console-builtin.cjs.map +1 -0
- package/dist/components/console-builtin.d.cts +56 -0
- package/dist/components/console-builtin.d.cts.map +1 -0
- package/dist/components/console-builtin.d.mts +56 -0
- package/dist/components/console-builtin.d.mts.map +1 -0
- package/dist/components/console-builtin.mjs +2077 -0
- package/dist/components/console-builtin.mjs.map +1 -0
- package/dist/components/help.cjs +130 -0
- package/dist/components/help.cjs.map +1 -0
- package/dist/components/help.d.cts +57 -0
- package/dist/components/help.d.cts.map +1 -0
- package/dist/components/help.d.mts +57 -0
- package/dist/components/help.d.mts.map +1 -0
- package/dist/components/help.mjs +126 -0
- package/dist/components/help.mjs.map +1 -0
- package/dist/components/index.cjs +39 -15
- package/dist/components/index.d.cts +9 -7
- package/dist/components/index.d.mts +9 -7
- package/dist/components/index.mjs +8 -6
- package/dist/components/utils-builtin.cjs +612 -0
- package/dist/components/utils-builtin.cjs.map +1 -0
- package/dist/components/utils-builtin.d.cts +32 -0
- package/dist/components/utils-builtin.d.cts.map +1 -0
- package/dist/components/utils-builtin.d.mts +32 -0
- package/dist/components/utils-builtin.d.mts.map +1 -0
- package/dist/components/utils-builtin.mjs +605 -0
- package/dist/components/utils-builtin.mjs.map +1 -0
- package/dist/components/virtual-command-entry.cjs +140 -0
- package/dist/components/virtual-command-entry.cjs.map +1 -0
- package/dist/components/virtual-command-entry.d.cts +21 -0
- package/dist/components/virtual-command-entry.d.cts.map +1 -0
- package/dist/components/virtual-command-entry.d.mts +21 -0
- package/dist/components/virtual-command-entry.d.mts.map +1 -0
- package/dist/components/virtual-command-entry.mjs +137 -0
- package/dist/components/virtual-command-entry.mjs.map +1 -0
- package/dist/contexts/index.cjs +4 -0
- package/dist/contexts/index.d.cts +2 -0
- package/dist/contexts/index.d.mts +2 -0
- package/dist/contexts/index.mjs +3 -0
- package/dist/contexts/theme.d.cts +20 -0
- package/dist/contexts/theme.d.cts.map +1 -0
- package/dist/contexts/theme.d.mts +20 -0
- package/dist/contexts/theme.d.mts.map +1 -0
- package/dist/helpers/ansi-utils.cjs +28 -4
- package/dist/helpers/ansi-utils.cjs.map +1 -1
- package/dist/helpers/ansi-utils.d.cts +68 -0
- package/dist/helpers/ansi-utils.d.cts.map +1 -0
- package/dist/helpers/ansi-utils.d.mts +68 -0
- package/dist/helpers/ansi-utils.d.mts.map +1 -0
- package/dist/helpers/ansi-utils.mjs +28 -4
- package/dist/helpers/ansi-utils.mjs.map +1 -1
- package/dist/helpers/get-default-options.cjs +6 -13
- package/dist/helpers/get-default-options.cjs.map +1 -1
- package/dist/helpers/get-default-options.mjs +6 -13
- package/dist/helpers/get-default-options.mjs.map +1 -1
- package/dist/index.cjs +117 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +118 -28
- package/dist/index.mjs.map +1 -1
- package/dist/types/plugin.d.cts +1 -6
- package/dist/types/plugin.d.cts.map +1 -0
- package/dist/types/plugin.d.mts +1 -6
- package/dist/types/plugin.d.mts.map +1 -0
- package/package.json +163 -71
- package/dist/components/builtin/console.cjs +0 -1232
- package/dist/components/builtin/console.cjs.map +0 -1
- package/dist/components/builtin/console.d.cts +0 -37
- package/dist/components/builtin/console.d.mts +0 -37
- package/dist/components/builtin/console.mjs +0 -1225
- package/dist/components/builtin/console.mjs.map +0 -1
- package/dist/components/builtin/index.cjs +0 -9
- package/dist/components/builtin/index.d.cts +0 -2
- package/dist/components/builtin/index.d.mts +0 -2
- package/dist/components/builtin/index.mjs +0 -3
- package/dist/components/entry/bin.cjs +0 -92
- package/dist/components/entry/bin.cjs.map +0 -1
- package/dist/components/entry/bin.mjs +0 -91
- package/dist/components/entry/bin.mjs.map +0 -1
- package/dist/components/entry/command.cjs +0 -54
- package/dist/components/entry/command.cjs.map +0 -1
- package/dist/components/entry/command.d.cts +0 -15
- package/dist/components/entry/command.d.mts +0 -15
- package/dist/components/entry/command.mjs +0 -53
- package/dist/components/entry/command.mjs.map +0 -1
- package/dist/components/entry/index.cjs +0 -3
- package/dist/components/entry/index.d.cts +0 -2
- package/dist/components/entry/index.d.mts +0 -2
- package/dist/components/entry/index.mjs +0 -3
- package/dist/components/shutdown.cjs +0 -93
- package/dist/components/shutdown.cjs.map +0 -1
- package/dist/components/shutdown.d.cts +0 -14
- package/dist/components/shutdown.d.mts +0 -14
- package/dist/components/shutdown.mjs +0 -91
- package/dist/components/shutdown.mjs.map +0 -1
- package/dist/contexts/command.cjs +0 -21
- package/dist/contexts/command.cjs.map +0 -1
- package/dist/contexts/command.mjs +0 -19
- package/dist/contexts/command.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args-parser-logic.mjs","names":["code","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","ReflectionKind","usePowerlines","getVariableCommandPathName","isVariableCommandPath","camelCase","constantCase","pascalCase","isSetString","VariablePathsParserLogic","props","path","_$createComponent","each","segments","children","segment","index","when","name","type","initializer","variables","default","fallback","_$createIntrinsic","condition","optional","_$memo","ParamsParserLogic","params","context","length","hardline","param","variadic","config","envPrefix","OptionsMember","option","doc","description","title","kind","string","number","boolean","Boolean","isNegativeOf","alias","replace","OptionsMemberParserLogic","equalsRegex","isCaseSensitive","toLowerCase","map","a","join","includes","OptionsMemberParserCondition","OptionsInterfaceDeclaration","command","Object","entries","options","OptionsParserLogic","env","undefined","JSON","stringify","filter","i"],"sources":["../../src/components/args-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, 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 { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\n\nimport {\n getVariableCommandPathName,\n isVariableCommandPath\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n BooleanCommandOption,\n CommandOption,\n CommandParam,\n CommandTree,\n CommandTreePath,\n NumberCommandOption,\n StringCommandOption\n} from \"@shell-shock/core/types/command\";\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 type { ScriptPresetContext } from \"../types/plugin\";\n\nexport function VariablePathsParserLogic(props: { path: CommandTreePath }) {\n const { path } = props;\n\n return (\n <For each={path.segments ?? []}>\n {(segment, index) => (\n <Show when={isVariableCommandPath(segment)}>\n <VarDeclaration\n let\n name={camelCase(getVariableCommandPathName(segment))}\n type=\"string | undefined\"\n initializer={\n <Show\n when={isSetString(\n path.variables[getVariableCommandPathName(segment)]?.default\n )}\n fallback={code`undefined;`}>\n {code` ?? \"${\n path.variables[getVariableCommandPathName(segment)]?.default\n }\";`}\n </Show>\n }\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(getVariableCommandPathName(segment))} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n <Show\n when={\n !path.variables[getVariableCommandPathName(segment)]?.optional\n }>\n <IfStatement\n condition={code`!${camelCase(\n getVariableCommandPathName(segment)\n )}`}>\n {code`error(\\`Missing required command path variable: \"${getVariableCommandPathName(\n segment\n )}\".\\`);`}\n {code`return;`}\n </IfStatement>\n </Show>\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\n/**\n * The command parameter parser logic.\n */\nexport function ParamsParserLogic(props: { params: CommandParam[] }) {\n const { params } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <Show when={params && params.length > 0}>\n <For each={params ?? []} hardline>\n {param => (\n <VarDeclaration\n let\n name={camelCase(param.name)}\n type={param.variadic ? \"string[]\" : \"string | undefined\"}\n initializer={\n param.variadic ? (\n code`[]`\n ) : (\n <>\n {code`env.${\n context.config.envPrefix\n }_${constantCase(param.name)} ?? `}\n <Show when={isSetString(param.default)}>\n {code`\"${param.default}\"`}\n </Show>\n {code`undefined;`}\n </>\n )\n }\n />\n )}\n </For>\n <hbr />\n <VarDeclaration\n const\n name={\"argsDiv\"}\n type=\"number\"\n initializer={code` args.findIndex(arg => arg === \"--\");`}\n />\n <hbr />\n <IfStatement condition={code`argsDiv !== -1`}>\n <For each={params ?? []} hardline>\n {(param, index) => (\n <>\n <IfStatement\n condition={code`args.length > argsDiv + ${index + 1} && args[argsDiv + ${index + 1}]`}>\n <Show\n when={param.variadic}\n fallback={code`${camelCase(param.name)} = args[argsDiv + ${index + 1}];`}>{code`${camelCase(param.name)}.push(args[argsDiv + ${index + 1}]);`}</Show>\n </IfStatement>\n <hbr />\n <Show when={!param.optional}>\n <Show\n when={!param.default}\n fallback={\n <ElseClause>\n {code`${camelCase(param.name)} = \"${param.default}\";`}\n </ElseClause>\n }>\n <ElseClause>\n {code`error(\\`Missing required command parameter: \"${param.name}\".\\`);`}\n {code`return;`}\n </ElseClause>\n </Show>\n </Show>\n <hbr />\n </>\n )}\n </For>\n </IfStatement>\n </Show>\n );\n}\n\n/**\n * The command option interface property.\n */\nexport function OptionsMember({\n name,\n option\n}: {\n name: string;\n option: CommandOption;\n}) {\n const doc = option.description || `The ${option.title} command option.`;\n\n return (\n <>\n <Show when={option.kind === ReflectionKind.string}>\n <InterfaceMember\n name={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={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={name}\n doc={doc}\n type=\"boolean\"\n optional={option.optional}\n />\n <Show when={Boolean((option as BooleanCommandOption).isNegativeOf)}>\n <hbr />\n <InterfaceMember\n name={(option as BooleanCommandOption).isNegativeOf!}\n doc={doc}\n type=\"boolean\"\n optional={option.optional}\n />\n </Show>\n </Show>\n <Show when={option.alias && option.alias.length > 0}>\n <hbr />\n <For each={option.alias ?? []} hardline>\n {alias => (\n <OptionsMember\n name={alias}\n option={{\n ...option,\n alias: [],\n description: `${doc.replace(\n /\\.+$/,\n \"\"\n )}. This property is an alias for ${name}.`\n }}\n />\n )}\n </For>\n </Show>\n </>\n );\n}\n\n/**\n * The command option property parser logic.\n */\nexport function OptionsMemberParserLogic({\n name,\n option\n}: {\n name: string;\n option: CommandOption;\n}) {\n const context = usePowerlines<ScriptPresetContext>();\n\n const equalsRegex = `/^--?(${\n context?.config.isCaseSensitive && name.length > 1\n ? name\n : name.toLowerCase()\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (context?.config.isCaseSensitive && name.length > 1\n ? a\n : a.toLowerCase()) === \"?\"\n ? \"\\\\?\"\n : context?.config.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 condition={`${equalsRegex}.test(arg)`}>\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 condition={`${equalsRegex}.test(arg)`}>\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 <ElseClause>\n {code`warn(\\`Invalid value provided for the ${option.title} option: \"\\${value}\" is not a valid number.\\`); `}\n </ElseClause>\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 <ElseClause>\n {code`warn(\\`Invalid value provided for the ${option.title} option: \"\\${value}\" is not a valid number.\\`); `}\n </ElseClause>\n </Show>\n </ElseIfClause>\n <hbr />\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.boolean}>\n <IfStatement condition={`${equalsRegex}.test(arg)`}>\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\"; `}\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 <Show when={option.alias && option.alias.length > 0}>\n <hbr />\n <For each={option.alias ?? []} hardline>\n {alias => (\n <>\n <Show\n when={alias.includes(\"?\") || alias.includes(\"-\")}\n fallback={code`options.${alias} `}>\n {code`options[\"${alias}\"] `}\n </Show>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code` = options.${name}; `}>\n {code` = options[\"${name}\"]; `}\n </Show>\n </>\n )}\n </For>\n </Show>\n </>\n );\n}\n\nfunction OptionsMemberParserCondition(props: {\n name: string;\n alias?: string[];\n}) {\n const { name, alias } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n {code`arg.startsWith(\"--${\n context?.config.isCaseSensitive ? name : name.toLowerCase()\n }=\") || arg === \"--${\n context?.config.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.startsWith(\"--${\n context?.config.isCaseSensitive ? a : a.toLowerCase()\n }=\") || arg === \"--${\n context?.config.isCaseSensitive ? 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 return (\n <InterfaceDeclaration export name={`${pascalCase(command.name)}Options`}>\n <For each={Object.entries(command.options)}>\n {([name, option]) => <OptionsMember name={name} option={option} />}\n </For>\n </InterfaceDeclaration>\n );\n}\n\n/**\n * The command options parser logic.\n */\nexport function OptionsParserLogic(props: { command: CommandTree }) {\n const { command } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <VarDeclaration\n const\n name=\"options\"\n initializer={code` {\n ${Object.entries(command.options)\n .map(([name, option]) => {\n if (option.kind === ReflectionKind.string) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env\n ? `env.${context.config.envPrefix}_${option.env}`\n : \"\"\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\n ? `env.${context.config.envPrefix}_${option.env}`\n : \"\"\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\n ? `env.${context.config.envPrefix}_${option.env} ?? `\n : \"\"\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 => isVariableCommandPath(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 context?.config.isCaseSensitive ? \"\" : \".toLowerCase()\"\n }}\\`\n : args[i].length > 2 && args[i].startsWith(\"-\")\n ? \\`-\\${args[i].slice(1).replaceAll(\"-\", \"\")}\\`\n : args[i]; `}\n />\n <hbr />\n <For each={Object.entries(command.options)} hardline>\n {([name, option], i) => (\n <Show\n when={i === 0}\n fallback={\n <ElseIfClause\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n />\n }>\n <OptionsMemberParserLogic name={name} option={option} />\n </ElseIfClause>\n }>\n <IfStatement\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n />\n }>\n <OptionsMemberParserLogic name={name} option={option} />\n </IfStatement>\n </Show>\n )}\n </For>\n <hbr />\n {code` } `}\n <hbr />\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAiDA,SAAgBiB,yBAAyBC,OAAkC;CACzE,MAAM,EAAEC,SAASD;AAEjB,QAAAE,gBACGnB,KAAG;EAAA,IAACoB,OAAI;AAAA,UAAEF,KAAKG,YAAY,EAAE;;EAAAC,WAC1BC,SAASC,UAAKL,gBACblB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEd,sBAAsBY,QAAQ;;GAAA,IAAAD,WAAA;AAAA,WAAA;KAAAH,gBACvCZ,gBAAc;MAAA,OAAA;MAAA,IAEbmB,OAAI;AAAA,cAAEd,UAAUF,2BAA2Ba,QAAQ,CAAC;;MACpDI,MAAI;MAAA,IACJC,cAAW;AAAA,cAAAT,gBACRlB,MAAI;QAAA,IACHwB,OAAI;AAAA,gBAAEV,YACJG,KAAKW,UAAUnB,2BAA2Ba,QAAQ,GAAGO,QACtD;;QACDC,UAAUhC,IAAI;QAAY,IAAAuB,WAAA;AAAA,gBACzBvB,IAAI,QACHmB,KAAKW,UAAUnB,2BAA2Ba,QAAQ,GAAGO,QAAO;;QAC1D,CAAA;;MAAA,CAAA;KAAAE,gBAAA,OAAA,EAAA,CAAA;KAAAb,gBAKTf,aAAW;MACV6B,WAAWlC,IAAI,iBAAiB,IAAIyB,MAAK,WAAY,IAAIA,MAAK;MAAG,IAAAF,WAAA;AAAA,cAChEvB,IAAI,GAAGa,UAAUF,2BAA2Ba,QAAQ,CAAC,CAAA,UAAW,IAAIC,MAAK;;MAAI,CAAA;KAAAQ,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAb,gBAI/ElB,MAAI;MAAA,IACHwB,OAAI;AAAA,cACF,CAACP,KAAKW,UAAUnB,2BAA2Ba,QAAQ,GAAGW;;MAAQ,IAAAZ,WAAA;AAAA,cAAAH,gBAE/Df,aAAW;QAAA,IACV6B,YAAS;AAAA,gBAAElC,IAAI,IAAIa,UACjBF,2BAA2Ba,QAC7B,CAAC;;QAAE,IAAAD,WAAA;AAAA,gBAAA,CAAAa,WACFpC,IAAI,oDAAoDW,2BACvDa,QACD,CAAA,QAAQ,EACRxB,IAAI,UAAS;;QAAA,CAAA;;MAAA,CAAA;KAAAiC,gBAAA,OAAA,EAAA,CAAA;KAAA;;GAAA,CAAA;EAKrB,CAAA;;;;;AAQP,SAAgBI,kBAAkBnB,OAAmC;CACnE,MAAM,EAAEoB,WAAWpB;CAEnB,MAAMqB,UAAU7B,eAAoC;AAEpD,QAAAU,gBACGlB,MAAI;EAAA,IAACwB,OAAI;AAAA,UAAEY,UAAUA,OAAOE,SAAS;;EAAC,IAAAjB,WAAA;AAAA,UAAA;IAAAH,gBACpCnB,KAAG;KAACoB,MAAMiB,UAAU,EAAE;KAAEG,UAAQ;KAAAlB,WAC9BmB,UAAKtB,gBACHZ,gBAAc;MAAA,OAAA;MAAA,IAEbmB,OAAI;AAAA,cAAEd,UAAU6B,MAAMf,KAAK;;MAAA,IAC3BC,OAAI;AAAA,cAAEc,MAAMC,WAAW,aAAa;;MAAoB,IACxDd,cAAW;AAAA,cACTO,WAAA,CAAA,CAAAM,MAAMC,SAAQ,EAAA,GACZ3C,IAAI,OAAI;QAAAoC,WAGLpC,IAAI,OACHuC,QAAQK,OAAOC,UAAS,GACtB/B,aAAa4B,MAAMf,KAAK,CAAA,OAAO;QAAAP,gBAClClB,MAAI;SAAA,IAACwB,OAAI;AAAA,iBAAEV,YAAY0B,MAAMX,QAAQ;;SAAA,IAAAR,WAAA;AAAA,iBACnCvB,IAAI,IAAI0C,MAAMX,QAAO;;SAAG,CAAA;QAE1B/B,IAAI;QAER;;MAAA,CAAA;KAGN,CAAA;IAAAiC,gBAAA,OAAA,EAAA,CAAA;IAAAb,gBAGFZ,gBAAc;KAAA,SAAA;KAEbmB,MAAM;KACNC,MAAI;KACJC,aAAa7B,IAAI;KAAuC,CAAA;IAAAiC,gBAAA,OAAA,EAAA,CAAA;IAAAb,gBAGzDf,aAAW;KAAC6B,WAAWlC,IAAI;KAAgB,IAAAuB,WAAA;AAAA,aAAAH,gBACzCnB,KAAG;OAACoB,MAAMiB,UAAU,EAAE;OAAEG,UAAQ;OAAAlB,WAC7BmB,OAAOjB,UAAK;QAAAL,gBAETf,aAAW;SACV6B,WAAWlC,IAAI,2BAA2ByB,QAAQ,EAAC,qBAAsBA,QAAQ,EAAC;SAAG,IAAAF,WAAA;AAAA,iBAAAH,gBACpFlB,MAAI;WAAA,IACHwB,OAAI;AAAA,mBAAEgB,MAAMC;;WAAQ,IACpBX,WAAQ;AAAA,mBAAEhC,IAAI,GAAGa,UAAU6B,MAAMf,KAAK,CAAA,oBAAqBF,QAAQ,EAAC;;WAAI,IAAAF,WAAA;AAAA,mBAAGvB,IAAI,GAAGa,UAAU6B,MAAMf,KAAK,CAAA,uBAAwBF,QAAQ,EAAC;;WAAK,CAAA;;SAAA,CAAA;QAAAQ,gBAAA,OAAA,EAAA,CAAA;QAAAb,gBAGhJlB,MAAI;SAAA,IAACwB,OAAI;AAAA,iBAAE,CAACgB,MAAMP;;SAAQ,IAAAZ,WAAA;AAAA,iBAAAH,gBACxBlB,MAAI;WAAA,IACHwB,OAAI;AAAA,mBAAE,CAACgB,MAAMX;;WAAO,IACpBC,WAAQ;AAAA,mBAAAZ,gBACLjB,YAAU,EAAA,IAAAoB,WAAA;AAAA,oBACRvB,IAAI,GAAGa,UAAU6B,MAAMf,KAAK,CAAA,MAAOe,MAAMX,QAAO;eAAI,CAAA;;WAAA,IAAAR,WAAA;AAAA,mBAAAH,gBAGxDjB,YAAU,EAAA,IAAAoB,WAAA;AAAA,oBAAA,CAAAa,WACRpC,IAAI,gDAAgD0C,MAAMf,KAAI,QAAQ,EACtE3B,IAAI,UAAS;eAAA,CAAA;;WAAA,CAAA;;SAAA,CAAA;QAAAiC,gBAAA,OAAA,EAAA,CAAA;QAAA;OAMvB,CAAA;;KAAA,CAAA;IAAA;;EAAA,CAAA;;;;;AAUX,SAAgBa,cAAc,EAC5BnB,MACAoB,UAIC;CACD,MAAMC,MAAMD,OAAOE,eAAe,OAAOF,OAAOG,MAAK;AAErD,QAAA;EAAA9B,gBAEKlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOI,SAAS1C,eAAe2C;;GAAM,IAAA7B,WAAA;AAAA,WAAAH,gBAC9Cb,iBAAe;KACRoB;KACDqB;KAAG,IACRpB,OAAI;AAAA,aACDmB,OAA+BJ,WAAW,aAAa;;KAAQ,IAElER,WAAQ;AAAA,aAAEY,OAAOZ;;KAAQ,CAAA;;GAAA,CAAA;EAAAf,gBAG5BlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOI,SAAS1C,eAAe4C;;GAAM,IAAA9B,WAAA;AAAA,WAAAH,gBAC9Cb,iBAAe;KACRoB;KACDqB;KAAG,IACRpB,OAAI;AAAA,aACDmB,OAA+BJ,WAAW,aAAa;;KAAQ,IAElER,WAAQ;AAAA,aAAEY,OAAOZ;;KAAQ,CAAA;;GAAA,CAAA;EAAAf,gBAG5BlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOI,SAAS1C,eAAe6C;;GAAO,IAAA/B,WAAA;AAAA,WAAA,CAAAH,gBAC/Cb,iBAAe;KACRoB;KACDqB;KACLpB,MAAI;KAAA,IACJO,WAAQ;AAAA,aAAEY,OAAOZ;;KAAQ,CAAA,EAAAf,gBAE1BlB,MAAI;KAAA,IAACwB,OAAI;AAAA,aAAE6B,QAASR,OAAgCS,aAAa;;KAAA,IAAAjC,WAAA;AAAA,aAAA,CAAAU,gBAAA,OAAA,EAAA,CAAA,EAAAb,gBAE/Db,iBAAe;OAAA,IACdoB,OAAI;AAAA,eAAGoB,OAAgCS;;OAClCR;OACLpB,MAAI;OAAA,IACJO,WAAQ;AAAA,eAAEY,OAAOZ;;OAAQ,CAAA,CAAA;;KAAA,CAAA,CAAA;;GAAA,CAAA;EAAAf,gBAI9BlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOU,SAASV,OAAOU,MAAMjB,SAAS;;GAAC,IAAAjB,WAAA;AAAA,WAAA,CAAAU,gBAAA,OAAA,EAAA,CAAA,EAAAb,gBAEhDnB,KAAG;KAAA,IAACoB,OAAI;AAAA,aAAE0B,OAAOU,SAAS,EAAE;;KAAEhB,UAAQ;KAAAlB,WACpCkC,UAAKrC,gBACH0B,eAAa;MACZnB,MAAM8B;MAAK,IACXV,SAAM;AAAA,cAAE;QACN,GAAGA;QACHU,OAAO,EAAE;QACTR,aAAa,GAAGD,IAAIU,QAClB,QACA,GACD,CAAA,kCAAmC/B,KAAI;QACzC;;MAAA,CAAA;KAEJ,CAAA,CAAA;;GAAA,CAAA;EAAA;;;;;AAUX,SAAgBgC,yBAAyB,EACvChC,MACAoB,UAIC;CACD,MAAMR,UAAU7B,eAAoC;CAEpD,MAAMkD,cAAc,SAClBrB,SAASK,OAAOiB,mBAAmBlC,KAAKa,SAAS,IAC7Cb,OACAA,KAAKmC,aAAa,GACrBf,OAAOU,SAASV,OAAOU,MAAMjB,SAAS,IAAI,MAAM,KAAKO,OAAOU,OAC3DM,KAAIC,OACHzB,SAASK,OAAOiB,mBAAmBlC,KAAKa,SAAS,IAC9CwB,IACAA,EAAEF,aAAa,MAAM,MACrB,QACAvB,SAASK,OAAOiB,mBAAmBlC,KAAKa,SAAS,IAC/CwB,IACAA,EAAEF,aACV,CAAC,CACAG,KAAK,IAAI,CAAA;AAEZ,QAAA;EAAA7C,gBAEKlB,MAAI;GAAA,IACHwB,OAAI;AAAA,WACFqB,OAAOI,SAAS1C,eAAe2C,UAC/BL,OAAOI,SAAS1C,eAAe4C;;GAAM,IAAA9B,WAAA;AAAA,WAAA,CAAAH,gBAEtClB,MAAI;KAAA,IACHwB,OAAI;AAAA,aAAGqB,OAAqDJ;;KAAQ,IAAApB,WAAA;AAAA,aAAA;OAAAH,gBACnElB,MAAI;QAAA,IACHwB,OAAI;AAAA,gBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;QAC9ClC,UAAUhC,IAAI,WAAW2B,KAAI;QAAWJ,UACvCvB,IAAI,YAAY2B,KAAI;QAAa,CAAA;OAAAM,gBAAA,OAAA,EAAA,CAAA;OAAAb,gBAGnCf,aAAW;QAAC6B,WAAW,GAAG0B,YAAW;QAAY,IAAArC,WAAA;AAAA,gBAAA;UAAAH,gBAC/ClB,MAAI;WAAA,IACHwB,OAAI;AAAA,mBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;WAC9ClC,UAAUhC,IAAI,WAAW2B,KAAI;WAAQJ,UACpCvB,IAAI,YAAY2B,KAAI;WAAU,CAAA;UAAAP,gBAEhClB,MAAI;WAAA,IAACwB,OAAI;AAAA,mBAAEqB,OAAOI,SAAS1C,eAAe2C;;WAAM7B,UAC9CvB,IAAI,kBAAkB4D,YAAW;WAAwG,CAAA;UAAAxC,gBAE3IlB,MAAI;WAAA,IAACwB,OAAI;AAAA,mBAAEqB,OAAOI,SAAS1C,eAAe4C;;WAAM9B,UAC9CvB,IAAI,kBAAkB4D,YAAW;WAA0J,CAAA;UAE7L5D,IAAI;UAAK;;QAAA,CAAA;OAAAoB,gBAEXhB,cAAY;QAAC8B,WAAW;QAAqB,IAAAX,WAAA;AAAA,gBAAA;UAAAH,gBAC3ClB,MAAI;WAAA,IACHwB,OAAI;AAAA,mBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;WAC9ClC,UAAUhC,IAAI,WAAW2B,KAAI;WAAQJ,UACpCvB,IAAI,YAAY2B,KAAI;WAAU,CAAA;UAAAP,gBAEhClB,MAAI;WAAA,IAACwB,OAAI;AAAA,mBAAEqB,OAAOI,SAAS1C,eAAe2C;;WAAM7B,UAC9CvB,IAAI;WAA+G,CAAA;UAAAoB,gBAErHlB,MAAI;WAAA,IAACwB,OAAI;AAAA,mBAAEqB,OAAOI,SAAS1C,eAAe4C;;WAAM9B,UAC9CvB,IAAI;WAAiK,CAAA;UAEvKA,IAAI;UAAK;;QAAA,CAAA;OAAA;;KAAA,CAAA,EAAAoB,gBAGblB,MAAI;KAAA,IACHwB,OAAI;AAAA,aACF,CAAEqB,OAAqDJ;;KAAQ,IAAApB,WAAA;AAAA,aAAA;OAAAH,gBAEhEf,aAAW;QAAC6B,WAAW,GAAG0B,YAAW;QAAY,IAAArC,WAAA;AAAA,gBAAA,CAAAH,gBAC/ClB,MAAI;UAAA,IAACwB,OAAI;AAAA,kBAAEqB,OAAOI,SAAS1C,eAAe2C;;UAAM,IAAA7B,WAAA;AAAA,kBAAA,CAAAH,gBAC9ClB,MAAI;YAAA,IACHwB,OAAI;AAAA,oBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;YAC9ClC,UAAUhC,IAAI,WAAW2B;YAAMJ,UAC9BvB,IAAI,YAAY2B,KAAI;YAAI,CAAA,EAE1B3B,IAAI,kBAAkB4D,YAAW,4DAA4D;;UAAA,CAAA,EAAAxC,gBAE/FlB,MAAI;UAAA,IAACwB,OAAI;AAAA,kBAAEqB,OAAOI,SAAS1C,eAAe4C;;UAAM,IAAA9B,WAAA;AAAA,kBAAA;YAAAH,gBAC9CZ,gBAAc;aAAA,SAAA;aAEbmB,MAAI;aACJE,aAAa7B,IAAI,uBAAuB4D,YAAW;aAA6D,CAAA;YAAA3B,gBAAA,OAAA,EAAA,CAAA;YAAAb,gBAGjHf,aAAW;aAAC6B,WAAW;aAAsB,IAAAX,WAAA;AAAA,qBAAA,CAAAH,gBAC3ClB,MAAI;eAAA,IACHwB,OAAI;AAAA,uBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;eAC9ClC,UAAUhC,IAAI,WAAW2B;eAAMJ,UAC9BvB,IAAI,YAAY2B,KAAI;eAAI,CAAA,EAE1B3B,IAAI,aAAY;;aAAA,CAAA;YAAAoB,gBAElBjB,YAAU,EAAA,IAAAoB,WAAA;AAAA,oBACRvB,IAAI,yCAAyC+C,OAAOG,MAAK;eAAkD,CAAA;YAAA;;UAAA,CAAA,CAAA;;QAAA,CAAA;OAAA9B,gBAIjHhB,cAAY;QAAC8B,WAAW;QAAqB,IAAAX,WAAA;AAAA,gBAAA,CAAAH,gBAC3ClB,MAAI;UAAA,IAACwB,OAAI;AAAA,kBAAEqB,OAAOI,SAAS1C,eAAe2C;;UAAM,IAAA7B,WAAA;AAAA,kBAAA,CAAAH,gBAC9ClB,MAAI;YAAA,IACHwB,OAAI;AAAA,oBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;YAC9ClC,UAAUhC,IAAI,WAAW2B;YAAMJ,UAC9BvB,IAAI,YAAY2B,KAAI;YAAI,CAAA,EAE1B3B,IAAI,oEAAmE;;UAAA,CAAA,EAAAoB,gBAEzElB,MAAI;UAAA,IAACwB,OAAI;AAAA,kBAAEqB,OAAOI,SAAS1C,eAAe4C;;UAAM,IAAA9B,WAAA;AAAA,kBAAA;YAAAH,gBAC9CZ,gBAAc;aAAA,SAAA;aAEbmB,MAAI;aACJE,aAAa7B,IAAI;aAAyE,CAAA;YAAAiC,gBAAA,OAAA,EAAA,CAAA;YAAAb,gBAG3Ff,aAAW;aAAC6B,WAAW;aAAsB,IAAAX,WAAA;AAAA,qBAAA,CAAAH,gBAC3ClB,MAAI;eAAA,IACHwB,OAAI;AAAA,uBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;eAC9ClC,UAAUhC,IAAI,WAAW2B;eAAMJ,UAC9BvB,IAAI,YAAY2B,KAAI;eAAI,CAAA,EAE1B3B,IAAI,aAAY;;aAAA,CAAA;YAAAoB,gBAElBjB,YAAU,EAAA,IAAAoB,WAAA;AAAA,oBACRvB,IAAI,yCAAyC+C,OAAOG,MAAK;eAAkD,CAAA;YAAA;;UAAA,CAAA,CAAA;;QAAA,CAAA;OAAAjB,gBAAA,OAAA,EAAA,CAAA;OAAA;;KAAA,CAAA,CAAA;;GAAA,CAAA;EAAAb,gBAOrHlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOI,SAAS1C,eAAe6C;;GAAO,IAAA/B,WAAA;AAAA,WAAA;KAAAH,gBAC/Cf,aAAW;MAAC6B,WAAW,GAAG0B,YAAW;MAAY,IAAArC,WAAA;AAAA,cAAA;QAAAH,gBAC/CZ,gBAAc;SAAA,SAAA;SAEbmB,MAAI;SACJE,aAAa7B,IAAI,gBAAgB4D,YAAW;SAA0E,CAAA;QAAA3B,gBAAA,OAAA,EAAA,CAAA;QAAAb,gBAGvHlB,MAAI;SAAA,IACHwB,OAAI;AAAA,iBAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;SAC9ClC,UAAUhC,IAAI,WAAW2B;SAAMJ,UAC9BvB,IAAI,YAAY2B,KAAI;SAAI,CAAA;QAE1B3B,IAAI;QAA6F;;MAAA,CAAA;KAAAoB,gBAEnGjB,YAAU,EAAA,IAAAoB,WAAA;AAAA,aAAAH,gBACRlB,MAAI;OAAA,IACHwB,OAAI;AAAA,eAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;OAC9ClC,UAAUhC,IAAI,WAAW2B,KAAI;OAAWJ,UACvCvB,IAAI,YAAY2B,KAAI;OAAa,CAAA;QAAA,CAAA;KAAAP,gBAGrClB,MAAI;MAAA,IAACwB,OAAI;AAAA,cAAE6B,QAASR,OAAgCS,aAAa;;MAAA,IAAAjC,WAAA;AAAA,cAAA,CAAAU,gBAAA,OAAA,EAAA,CAAA,EAAAb,gBAE/DlB,MAAI;QAAA,IACHwB,OAAI;AAAA,gBACDqB,OAAgCS,aAAcU,SAAS,IAAI,IAC3DnB,OAAgCS,aAAcU,SAAS,IAAI;;QAAA,IAE9DlC,WAAQ;AAAA,gBAAEhC,IAAI,WAAY+C,OAAgCS,aAAY;;QAAY,IAAAjC,WAAA;AAAA,gBACjFvB,IAAI,YAAa+C,OAAgCS,aAAY;;QAAc,CAAA,CAAA;;MAAA,CAAA;KAAA;;GAAA,CAAA;EAAApC,gBAIjFlB,MAAI;GAAA,IAACwB,OAAI;AAAA,WAAEqB,OAAOU,SAASV,OAAOU,MAAMjB,SAAS;;GAAC,IAAAjB,WAAA;AAAA,WAAA,CAAAU,gBAAA,OAAA,EAAA,CAAA,EAAAb,gBAEhDnB,KAAG;KAAA,IAACoB,OAAI;AAAA,aAAE0B,OAAOU,SAAS,EAAE;;KAAEhB,UAAQ;KAAAlB,WACpCkC,UAAK,CAAArC,gBAEDlB,MAAI;MAAA,IACHwB,OAAI;AAAA,cAAE+B,MAAMS,SAAS,IAAI,IAAIT,MAAMS,SAAS,IAAI;;MAChDlC,UAAUhC,IAAI,WAAWyD,MAAK;MAAGlC,UAChCvB,IAAI,YAAYyD,MAAK;MAAK,CAAA,EAAArC,gBAE5BlB,MAAI;MAAA,IACHwB,OAAI;AAAA,cAAEC,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI;;MAC9ClC,UAAUhC,IAAI,cAAc2B,KAAI;MAAIJ,UACnCvB,IAAI,eAAe2B,KAAI;MAAM,CAAA,CAAA;KAGnC,CAAA,CAAA;;GAAA,CAAA;EAAA;;AAOX,SAASwC,6BAA6BjD,OAGnC;CACD,MAAM,EAAES,MAAM8B,UAAUvC;CAExB,MAAMqB,UAAU7B,eAAoC;AAEpD,QAAA,CAAA0B,WAEKpC,IAAI,qBACHuC,SAASK,OAAOiB,kBAAkBlC,OAAOA,KAAKmC,aAAa,CAAA,oBAE3DvB,SAASK,OAAOiB,kBAAkBlC,OAAOA,KAAKmC,aAAa,CAAA,wBACpCnC,KAAI,mBAAoBA,KAAI,GAAG,EAAAP,gBACvDlB,MAAI;EAAA,IAACwB,OAAI;AAAA,UAAE+B,SAASA,MAAMjB,SAAS;;EAAC,IAAAjB,WAAA;AAAA,UAAAH,gBAClCnB,KAAG;IAACoB,MAAMoC,SAAS,EAAE;IAAAlC,WACnByC,MACChE,IAAI,yBACFuC,SAASK,OAAOiB,kBAAkBG,IAAIA,EAAEF,aAAa,CAAA,oBAErDvB,SAASK,OAAOiB,kBAAkBG,IAAIA,EAAEF,aAAa,CAAA,wBAC9BE,EAAC,mBAAoBA,EAAC;IAAG,CAAA;;EAAA,CAAA,CAAA;;AAQ9D,SAAgBI,4BAA4BlD,OAAiC;CAC3E,MAAM,EAAEmD,YAAYnD;AAEpB,QAAAE,gBACGd,sBAAoB;EAAA,UAAA;EAAA,IAAQqB,OAAI;AAAA,UAAE,GAAGZ,WAAWsD,QAAQ1C,KAAK,CAAA;;EAAS,IAAAJ,WAAA;AAAA,UAAAH,gBACpEnB,KAAG;IAAA,IAACoB,OAAI;AAAA,YAAEiD,OAAOC,QAAQF,QAAQG,QAAQ;;IAAAjD,WACtC,CAACI,MAAMoB,YAAO3B,gBAAM0B,eAAa;KAAOnB;KAAcoB;KAAM,CAAA;IAAI,CAAA;;EAAA,CAAA;;;;;AAS1E,SAAgB0B,mBAAmBvD,OAAiC;CAClE,MAAM,EAAEmD,YAAYnD;CAEpB,MAAMqB,UAAU7B,eAAoC;AAEpD,QAAA;EAAAU,gBAEKZ,gBAAc;GAAA,SAAA;GAEbmB,MAAI;GAAA,IACJE,cAAW;AAAA,WAAE7B,IAAI;YACbsE,OAAOC,QAAQF,QAAQG,QAAQ,CAC9BT,KAAK,CAACpC,MAAMoB,YAAY;AACvB,SAAIA,OAAOI,SAAS1C,eAAe2C,OACjC,QAAO,IAAIzB,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI,GAAG,IAAIvC,KAAI,KAAM,GAAGA,OAAM,IAC3EoB,OAAO2B,MACH,OAAOnC,QAAQK,OAAOC,UAAS,GAAIE,OAAO2B,QAC1C,KAEJ3B,OAAOJ,WACHI,OAAOhB,YAAY4C,SACjB,GACE5B,OAAO2B,MAAM,SAAS,KACrBE,KAAKC,UAAU9B,OAAOhB,QAAQ,KACjCgB,OAAO2B,MACL,WACA,KACJ3B,OAAOhB,YAAY4C,SACjB,GAAG5B,OAAO2B,MAAM,SAAS,GAAE,GAAI3B,OAAOhB,QAAO,KAC7C,GAAE;cAEDgB,OAAOI,SAAS1C,eAAe4C,OACxC,QAAO,IAAI1B,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI,GAAG,IAAIvC,KAAI,KAAM,GAAGA,OAAM,IAC3EoB,OAAO2B,MACH,OAAOnC,QAAQK,OAAOC,UAAS,GAAIE,OAAO2B,QAC1C,KAEJ3B,OAAOJ,WACHI,OAAOhB,YAAY4C,SACjB,GACE5B,OAAO2B,MAAM,SAAS,KACrBE,KAAKC,UAAU9B,OAAOhB,QAAQ,KACjCgB,OAAO2B,MACL,WACA,KACJ3B,OAAOhB,YAAY4C,SACjB,GAAG5B,OAAO2B,MAAM,SAAS,KAAK3B,OAAOhB,YACrC,GAAE;cAEDgB,OAAOI,SAAS1C,eAAe6C,QACxC,QAAO,IAAI3B,KAAKuC,SAAS,IAAI,IAAIvC,KAAKuC,SAAS,IAAI,GAAG,IAAIvC,KAAI,KAAM,GAAGA,OAAM,IAC3EoB,OAAO2B,MACH,OAAOnC,QAAQK,OAAOC,UAAS,GAAIE,OAAO2B,IAAG,QAC7C,KACH3B,OAAOhB,UAAU,SAAS,QAAO;AAGtC,YAAO;MACP,CACDkC,KAAK,GAAG,CAAA;iBACJlD,WAAWsD,QAAQ1C,KAAK,CAAA;;GAAU,CAAA;EAAAM,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAG,WAI5CpC,IAAI,kCACHqE,QAAQlD,KAAKG,SAASwD,QAAOtD,YAAWZ,sBAAsBY,QAAQ,CAAC,CACpEgB,OAAM,mBACQ;EAAAP,gBAAA,OAAA,EAAA,CAAA;EAAAb,gBAElBZ,gBAAc;GAAA,SAAA;GAEbmB,MAAI;GACJC,MAAI;GAAA,IACJC,cAAW;AAAA,WAAE7B,IAAI;yDAEbuC,SAASK,OAAOiB,kBAAkB,KAAK,iBAAgB;;;;;GAI7C,CAAA;EAAA5B,gBAAA,OAAA,EAAA,CAAA;EAAAb,gBAGfnB,KAAG;GAAA,IAACoB,OAAI;AAAA,WAAEiD,OAAOC,QAAQF,QAAQG,QAAQ;;GAAE/B,UAAQ;GAAAlB,WAChD,CAACI,MAAMoB,SAASgC,MAAC3D,gBAChBlB,MAAI;IACHwB,MAAMqD,MAAM;IAAC,IACb/C,WAAQ;AAAA,YAAAZ,gBACLhB,cAAY;MAAA,IACX8B,YAAS;AAAA,cAAAd,gBACN+C,8BAA4B;QACrBxC;QAAI,IACV8B,QAAK;AAAA,gBAAEV,OAAOU;;QAAK,CAAA;;MAAA,IAAAlC,WAAA;AAAA,cAAAH,gBAGtBuC,0BAAwB;QAAOhC;QAAcoB;QAAM,CAAA;;MAAA,CAAA;;IAAA,IAAAxB,WAAA;AAAA,YAAAH,gBAGvDf,aAAW;MAAA,IACV6B,YAAS;AAAA,cAAAd,gBACN+C,8BAA4B;QACrBxC;QAAI,IACV8B,QAAK;AAAA,gBAAEV,OAAOU;;QAAK,CAAA;;MAAA,IAAAlC,WAAA;AAAA,cAAAH,gBAGtBuC,0BAAwB;QAAOhC;QAAcoB;QAAM,CAAA;;MAAA,CAAA;;IAAA,CAAA;GAGzD,CAAA;EAAAd,gBAAA,OAAA,EAAA,CAAA;EAGFjC,IAAI;EAAKiC,gBAAA,OAAA,EAAA,CAAA;EAAA"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
|
|
3
|
+
let __alloy_js_core = require("@alloy-js/core");
|
|
4
|
+
let __alloy_js_typescript = require("@alloy-js/typescript");
|
|
5
|
+
let __shell_shock_core_plugin_utils_context_helpers = require("@shell-shock/core/plugin-utils/context-helpers");
|
|
6
|
+
let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
|
|
7
|
+
let __powerlines_plugin_alloy_typescript_components_entry_file = require("@powerlines/plugin-alloy/typescript/components/entry-file");
|
|
8
|
+
let __powerlines_plugin_alloy_typescript_components_tsdoc = require("@powerlines/plugin-alloy/typescript/components/tsdoc");
|
|
9
|
+
let __stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
|
|
10
|
+
let __stryke_path_file_path_fns = require("@stryke/path/file-path-fns");
|
|
11
|
+
let __stryke_path_replace = require("@stryke/path/replace");
|
|
12
|
+
let __stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
|
|
13
|
+
let defu = require("defu");
|
|
14
|
+
defu = require_rolldown_runtime.__toESM(defu);
|
|
15
|
+
|
|
16
|
+
//#region src/components/bin-entry.tsx
|
|
17
|
+
/**
|
|
18
|
+
* Runs the application main logic with proper exit handling.
|
|
19
|
+
*/
|
|
20
|
+
function RunApplication() {
|
|
21
|
+
return [
|
|
22
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
23
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
24
|
+
__alloy_js_core.code`// Run the application main logic inside an asynchronous IIFE
|
|
25
|
+
(async () => {
|
|
26
|
+
try {
|
|
27
|
+
process.on("exit", () => exit({
|
|
28
|
+
skipExit: true,
|
|
29
|
+
isSynchronous: true,
|
|
30
|
+
signal: 0
|
|
31
|
+
}));
|
|
32
|
+
process.on("beforeExit", () => exit({
|
|
33
|
+
signal: 0
|
|
34
|
+
}));
|
|
35
|
+
process.on("message", message => {
|
|
36
|
+
if (message === 'shutdown') {
|
|
37
|
+
exit({
|
|
38
|
+
isSynchronous: true,
|
|
39
|
+
signal: -128
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
process.once("SIGTERM", () => exit({
|
|
45
|
+
signal: 15
|
|
46
|
+
}));
|
|
47
|
+
process.once("SIGINT", () => exit({
|
|
48
|
+
signal: 2
|
|
49
|
+
}));
|
|
50
|
+
process.once("SIGUSR2", () => {
|
|
51
|
+
verbose("The application was terminated by the user");
|
|
52
|
+
return exit({
|
|
53
|
+
signal: 12
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
process.once("SIGQUIT", () => {
|
|
57
|
+
verbose("The application was terminated by the user");
|
|
58
|
+
return exit({
|
|
59
|
+
signal: 12
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
for (const type of ["unhandledRejection", "uncaughtException"]) {
|
|
64
|
+
process.on(type, err => exit({
|
|
65
|
+
exception: err || new Error(\`An \${type === "unhandledRejection" ? "unhandled promise rejection" : "uncaught exception"} occurred during processing - the application is shutting down.\`)
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const result = await main();
|
|
70
|
+
if (result?.error) {
|
|
71
|
+
error(result.error);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
exit();
|
|
75
|
+
} catch (err) {
|
|
76
|
+
verbose("An exception occurred during processing");
|
|
77
|
+
exit({ exception: err as Error });
|
|
78
|
+
}
|
|
79
|
+
})();
|
|
80
|
+
`,
|
|
81
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The binary entry point for the Shell Shock project.
|
|
86
|
+
*/
|
|
87
|
+
function BinEntry(props) {
|
|
88
|
+
const { prefix, postfix, builtinImports, imports, children, ...rest } = props;
|
|
89
|
+
const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
|
|
90
|
+
const bins = (0, __alloy_js_core.computed)(() => (0, __stryke_helpers_get_unique.getUnique)(Object.values(context.config.bin)));
|
|
91
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
|
|
92
|
+
get each() {
|
|
93
|
+
return bins.value;
|
|
94
|
+
},
|
|
95
|
+
children: (bin) => (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_entry_file.EntryFile, (0, __alloy_js_core_jsx_runtime.mergeProps)(rest, {
|
|
96
|
+
get path() {
|
|
97
|
+
return (0, __stryke_path_file_path_fns.findFileName)((0, __stryke_path_replace.replaceExtension)(bin));
|
|
98
|
+
},
|
|
99
|
+
typeDefinition: {
|
|
100
|
+
file: bin,
|
|
101
|
+
output: "bin"
|
|
102
|
+
},
|
|
103
|
+
get imports() {
|
|
104
|
+
return (0, defu.default)({ didyoumean2: [
|
|
105
|
+
{
|
|
106
|
+
name: "didYouMean",
|
|
107
|
+
default: true
|
|
108
|
+
},
|
|
109
|
+
{ name: "ReturnTypeEnums" },
|
|
110
|
+
{ name: "ThresholdTypeEnums" }
|
|
111
|
+
] }, imports ?? {}, Object.entries(context.commands).filter(([, command]) => command.isVirtual).reduce((ret, [name, command]) => {
|
|
112
|
+
ret[`./${command.name}`] = [{
|
|
113
|
+
name: "handler",
|
|
114
|
+
alias: `handle${(0, __stryke_string_format_pascal_case.pascalCase)(name)}`
|
|
115
|
+
}];
|
|
116
|
+
return ret;
|
|
117
|
+
}, {}));
|
|
118
|
+
},
|
|
119
|
+
get builtinImports() {
|
|
120
|
+
return (0, defu.default)(builtinImports ?? {}, {
|
|
121
|
+
console: [
|
|
122
|
+
"error",
|
|
123
|
+
"verbose",
|
|
124
|
+
"table"
|
|
125
|
+
],
|
|
126
|
+
utils: ["hasFlag", "exit"]
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
get children() {
|
|
130
|
+
return [
|
|
131
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
132
|
+
get when() {
|
|
133
|
+
return Boolean(prefix);
|
|
134
|
+
},
|
|
135
|
+
get children() {
|
|
136
|
+
return [
|
|
137
|
+
prefix,
|
|
138
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
139
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
}),
|
|
143
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDoc, { get heading() {
|
|
144
|
+
return `Binary entry point for the ${(0, __shell_shock_core_plugin_utils_context_helpers.getAppTitle)(context)} CLI application.`;
|
|
145
|
+
} }),
|
|
146
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
|
|
147
|
+
async: true,
|
|
148
|
+
returnType: "any",
|
|
149
|
+
name: "main",
|
|
150
|
+
get children() {
|
|
151
|
+
return [
|
|
152
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
153
|
+
condition: __alloy_js_core.code`hasFlag(["version", "v"])`,
|
|
154
|
+
get children() {
|
|
155
|
+
return __alloy_js_core.code`console.log(${context?.packageJson.version ? `"${context?.packageJson.version}"` : "0.0.1"});
|
|
156
|
+
return;`;
|
|
157
|
+
}
|
|
158
|
+
}),
|
|
159
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
160
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
161
|
+
children,
|
|
162
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
167
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
168
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
169
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
170
|
+
get when() {
|
|
171
|
+
return Boolean(postfix);
|
|
172
|
+
},
|
|
173
|
+
get fallback() {
|
|
174
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(RunApplication, {});
|
|
175
|
+
},
|
|
176
|
+
children: postfix
|
|
177
|
+
}),
|
|
178
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
179
|
+
];
|
|
180
|
+
}
|
|
181
|
+
}))
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
exports.BinEntry = BinEntry;
|
|
187
|
+
exports.RunApplication = RunApplication;
|
|
188
|
+
//# sourceMappingURL=bin-entry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-entry.cjs","names":["code","computed","For","Show","FunctionDeclaration","IfStatement","usePowerlines","EntryFile","TSDoc","getAppTitle","getUnique","findFileName","replaceExtension","pascalCase","defu","RunApplication","_$createIntrinsic","BinEntry","props","prefix","postfix","builtinImports","imports","children","rest","context","bins","Object","values","config","bin","_$createComponent","each","value","_$mergeProps","path","typeDefinition","file","output","didyoumean2","name","default","entries","commands","filter","command","isVirtual","reduce","ret","alias","console","utils","when","Boolean","heading","async","returnType","condition","packageJson","version","fallback"],"sources":["../../src/components/bin-entry.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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { TypescriptFileImports } from \"@powerlines/plugin-alloy/types/components\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { TSDoc } from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { getAppTitle } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport { getUnique } from \"@stryke/helpers/get-unique\";\nimport { findFileName } from \"@stryke/path/file-path-fns\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\n/**\n * Runs the application main logic with proper exit handling.\n */\nexport function RunApplication() {\n return (\n <>\n <hbr />\n <hbr />\n {code`// Run the application main logic inside an asynchronous IIFE\n (async () => {\n try {\n process.on(\"exit\", () => exit({\n skipExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n exception: err || new Error(\\`An \\${type === \"unhandledRejection\" ? \"unhandled promise rejection\" : \"uncaught exception\"} occurred during processing - the application is shutting down.\\`)\n }));\n }\n\n const result = await main();\n if (result?.error) {\n error(result.error);\n }\n\n exit();\n } catch (err) {\n verbose(\"An exception occurred during processing\");\n exit({ exception: err as Error });\n }\n })();\n `}\n <hbr />\n </>\n );\n}\n\nexport interface BinEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"hashbang\"\n> {\n prefix?: Children;\n postfix?: Children;\n children: Children;\n}\n\n/**\n * The binary entry point for the Shell Shock project.\n */\nexport function BinEntry(props: BinEntryProps) {\n const { prefix, postfix, builtinImports, imports, children, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const bins = computed(() => getUnique(Object.values(context.config.bin)));\n\n return (\n <For each={bins.value}>\n {bin => (\n <EntryFile\n {...rest}\n path={findFileName(replaceExtension(bin))}\n typeDefinition={{\n file: bin,\n output: \"bin\"\n }}\n imports={defu(\n {\n didyoumean2: [\n { name: \"didYouMean\", default: true },\n { name: \"ReturnTypeEnums\" },\n { name: \"ThresholdTypeEnums\" }\n ]\n },\n imports ?? {},\n Object.entries(context.commands)\n .filter(([, command]) => command.isVirtual)\n .reduce((ret, [name, command]) => {\n ret[`./${command.name}`] = [\n { name: \"handler\", alias: `handle${pascalCase(name)}` }\n ];\n\n return ret;\n }, {} as TypescriptFileImports)\n )}\n builtinImports={defu(builtinImports ?? {}, {\n console: [\"error\", \"verbose\", \"table\"],\n utils: [\"hasFlag\", \"exit\"]\n })}>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n <TSDoc\n heading={`Binary entry point for the ${getAppTitle(context)} CLI application.`}></TSDoc>\n <FunctionDeclaration async returnType=\"any\" name=\"main\">\n <IfStatement condition={code`hasFlag([\"version\", \"v\"])`}>\n {code`console.log(${context?.packageJson.version ? `\"${context?.packageJson.version}\"` : \"0.0.1\"});\n return;`}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <hbr />\n <Show when={Boolean(postfix)} fallback={<RunApplication />}>\n {postfix}\n </Show>\n <hbr />\n </EntryFile>\n )}\n </For>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqCA,SAAgBe,iBAAiB;AAC/B,QAAA;mDAAA,OAAA,EAAA,CAAA;mDAAA,OAAA,EAAA,CAAA;EAIKf,oBAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAwDJ,OAAA,EAAA,CAAA;EAAA;;;;;AAkBP,SAAgBiB,SAASC,OAAsB;CAC7C,MAAM,EAAEC,QAAQC,SAASC,gBAAgBC,SAASC,UAAU,GAAGC,SAASN;CAExE,MAAMO,8EAA8C;CACpD,MAAMC,sFAAgCC,OAAOC,OAAOH,QAAQI,OAAOC,IAAI,CAAC,CAAC;AAEzE,yDACG5B,qBAAG;EAAA,IAAC8B,OAAI;AAAA,UAAEN,KAAKO;;EAAKV,WAClBO,yDACEvB,kHACKiB,MAAI;GAAA,IACRW,OAAI;AAAA,qGAAgCL,IAAI,CAAC;;GACzCM,gBAAgB;IACdC,MAAMP;IACNQ,QAAQ;IACT;GAAA,IACDhB,UAAO;AAAA,6BACL,EACEiB,aAAa;KACX;MAAEC,MAAM;MAAcC,SAAS;MAAM;KACrC,EAAED,MAAM,mBAAmB;KAC3B,EAAEA,MAAM,sBAAsB;KAAA,EAEjC,EACDlB,WAAW,EAAE,EACbK,OAAOe,QAAQjB,QAAQkB,SAAS,CAC7BC,QAAQ,GAAGC,aAAaA,QAAQC,UAAU,CAC1CC,QAAQC,KAAK,CAACR,MAAMK,aAAa;AAChCG,SAAI,KAAKH,QAAQL,UAAU,CACzB;MAAEA,MAAM;MAAWS,OAAO,4DAAoBT,KAAK;MAAI,CACxD;AAED,YAAOQ;OACN,EAA2B,CAClC,CAAC;;GAAA,IACD3B,iBAAc;AAAA,6BAAOA,kBAAkB,EAAE,EAAE;KACzC6B,SAAS;MAAC;MAAS;MAAW;MAAQ;KACtCC,OAAO,CAAC,WAAW,OAAM;KAC1B,CAAC;;GAAA,IAAA5B,WAAA;AAAA,WAAA;sDACDpB,sBAAI;MAAA,IAACiD,OAAI;AAAA,cAAEC,QAAQlC,OAAO;;MAAA,IAAAI,WAAA;AAAA,cAAA;QACxBJ;yDAAM,OAAA,EAAA,CAAA;yDAAA,OAAA,EAAA,CAAA;QAAA;;MAAA,CAAA;sDAIRX,6DAAK,EAAA,IACJ8C,UAAO;AAAA,aAAE,+FAA0C7B,QAAQ,CAAA;QAAmB,CAAA;sDAC/ErB,2CAAmB;MAACmD,OAAK;MAACC,YAAU;MAAOhB,MAAI;MAAA,IAAAjB,WAAA;AAAA,cAAA;yDAC7ClB,mCAAW;SAACoD,WAAWzD,oBAAI;SAA2B,IAAAuB,WAAA;AAAA,iBACpDvB,oBAAI,eAAeyB,SAASiC,YAAYC,UAAU,IAAIlC,SAASiC,YAAYC,QAAO,KAAM,QAAO;;;SAC5F,CAAA;yDAAA,OAAA,EAAA,CAAA;yDAAA,OAAA,EAAA,CAAA;QAILpC;yDAAQ,OAAA,EAAA,CAAA;QAAA;;MAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAMVpB,sBAAI;MAAA,IAACiD,OAAI;AAAA,cAAEC,QAAQjC,QAAQ;;MAAA,IAAEwC,WAAQ;AAAA,+DAAG7C,gBAAc,EAAA,CAAA;;MAAAQ,UACpDH;MAAO,CAAA;sDAAA,OAAA,EAAA,CAAA;KAAA;;GAAA,CAAA,CAAA;EAIb,CAAA"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { Children } from "@alloy-js/core";
|
|
2
2
|
import { EntryFileProps } from "@powerlines/plugin-alloy/typescript/components/entry-file";
|
|
3
3
|
|
|
4
|
-
//#region src/components/entry
|
|
4
|
+
//#region src/components/bin-entry.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Runs the application main logic with proper exit handling.
|
|
8
|
+
*/
|
|
9
|
+
declare function RunApplication(): Children;
|
|
5
10
|
interface BinEntryProps extends Omit<EntryFileProps, "path" | "hashbang"> {
|
|
6
11
|
prefix?: Children;
|
|
7
12
|
postfix?: Children;
|
|
13
|
+
children: Children;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* The binary entry point for the Shell Shock project.
|
|
11
17
|
*/
|
|
12
18
|
declare function BinEntry(props: BinEntryProps): Children;
|
|
13
19
|
//#endregion
|
|
14
|
-
export { BinEntry, BinEntryProps };
|
|
15
|
-
//# sourceMappingURL=bin.d.cts.map
|
|
20
|
+
export { BinEntry, BinEntryProps, RunApplication };
|
|
21
|
+
//# sourceMappingURL=bin-entry.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-entry.d.cts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;AAmEiB,iBAnED,cAAA,CAAA,CAmEe,EAnED,QAmEC;AAC7B,UADe,aAAA,SAAsB,IACrC,CAAA,cAAA,EAAA,MAAA,GAAA,UAAA,CAAA,CAAA;EAGS,MAAA,CAAA,EAAA,QAAA;EACC,OAAA,CAAA,EAAA,QAAA;EACA,QAAA,EAAA,QAAA;;;AAMZ;;iBAAgB,QAAA,QAAgB,gBAAa"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { Children } from "@alloy-js/core";
|
|
2
2
|
import { EntryFileProps } from "@powerlines/plugin-alloy/typescript/components/entry-file";
|
|
3
3
|
|
|
4
|
-
//#region src/components/entry
|
|
4
|
+
//#region src/components/bin-entry.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Runs the application main logic with proper exit handling.
|
|
8
|
+
*/
|
|
9
|
+
declare function RunApplication(): Children;
|
|
5
10
|
interface BinEntryProps extends Omit<EntryFileProps, "path" | "hashbang"> {
|
|
6
11
|
prefix?: Children;
|
|
7
12
|
postfix?: Children;
|
|
13
|
+
children: Children;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* The binary entry point for the Shell Shock project.
|
|
11
17
|
*/
|
|
12
18
|
declare function BinEntry(props: BinEntryProps): Children;
|
|
13
19
|
//#endregion
|
|
14
|
-
export { BinEntry, BinEntryProps };
|
|
15
|
-
//# sourceMappingURL=bin.d.mts.map
|
|
20
|
+
export { BinEntry, BinEntryProps, RunApplication };
|
|
21
|
+
//# sourceMappingURL=bin-entry.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-entry.d.mts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;AAmEiB,iBAnED,cAAA,CAAA,CAmEe,EAnED,QAmEC;AAC7B,UADe,aAAA,SAAsB,IACrC,CAAA,cAAA,EAAA,MAAA,GAAA,UAAA,CAAA,CAAA;EAGS,MAAA,CAAA,EAAA,QAAA;EACC,OAAA,CAAA,EAAA,QAAA;EACA,QAAA,EAAA,QAAA;;;AAMZ;;iBAAgB,QAAA,QAAgB,gBAAa"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { createComponent, createIntrinsic, memo, mergeProps } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { For, Show, code, computed } from "@alloy-js/core";
|
|
3
|
+
import { FunctionDeclaration, IfStatement } from "@alloy-js/typescript";
|
|
4
|
+
import { getAppTitle } from "@shell-shock/core/plugin-utils/context-helpers";
|
|
5
|
+
import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
|
|
6
|
+
import { EntryFile } from "@powerlines/plugin-alloy/typescript/components/entry-file";
|
|
7
|
+
import { TSDoc } from "@powerlines/plugin-alloy/typescript/components/tsdoc";
|
|
8
|
+
import { getUnique } from "@stryke/helpers/get-unique";
|
|
9
|
+
import { findFileName } from "@stryke/path/file-path-fns";
|
|
10
|
+
import { replaceExtension } from "@stryke/path/replace";
|
|
11
|
+
import { pascalCase } from "@stryke/string-format/pascal-case";
|
|
12
|
+
import defu from "defu";
|
|
13
|
+
|
|
14
|
+
//#region src/components/bin-entry.tsx
|
|
15
|
+
/**
|
|
16
|
+
* Runs the application main logic with proper exit handling.
|
|
17
|
+
*/
|
|
18
|
+
function RunApplication() {
|
|
19
|
+
return [
|
|
20
|
+
createIntrinsic("hbr", {}),
|
|
21
|
+
createIntrinsic("hbr", {}),
|
|
22
|
+
code`// Run the application main logic inside an asynchronous IIFE
|
|
23
|
+
(async () => {
|
|
24
|
+
try {
|
|
25
|
+
process.on("exit", () => exit({
|
|
26
|
+
skipExit: true,
|
|
27
|
+
isSynchronous: true,
|
|
28
|
+
signal: 0
|
|
29
|
+
}));
|
|
30
|
+
process.on("beforeExit", () => exit({
|
|
31
|
+
signal: 0
|
|
32
|
+
}));
|
|
33
|
+
process.on("message", message => {
|
|
34
|
+
if (message === 'shutdown') {
|
|
35
|
+
exit({
|
|
36
|
+
isSynchronous: true,
|
|
37
|
+
signal: -128
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
process.once("SIGTERM", () => exit({
|
|
43
|
+
signal: 15
|
|
44
|
+
}));
|
|
45
|
+
process.once("SIGINT", () => exit({
|
|
46
|
+
signal: 2
|
|
47
|
+
}));
|
|
48
|
+
process.once("SIGUSR2", () => {
|
|
49
|
+
verbose("The application was terminated by the user");
|
|
50
|
+
return exit({
|
|
51
|
+
signal: 12
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
process.once("SIGQUIT", () => {
|
|
55
|
+
verbose("The application was terminated by the user");
|
|
56
|
+
return exit({
|
|
57
|
+
signal: 12
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
for (const type of ["unhandledRejection", "uncaughtException"]) {
|
|
62
|
+
process.on(type, err => exit({
|
|
63
|
+
exception: err || new Error(\`An \${type === "unhandledRejection" ? "unhandled promise rejection" : "uncaught exception"} occurred during processing - the application is shutting down.\`)
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const result = await main();
|
|
68
|
+
if (result?.error) {
|
|
69
|
+
error(result.error);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exit();
|
|
73
|
+
} catch (err) {
|
|
74
|
+
verbose("An exception occurred during processing");
|
|
75
|
+
exit({ exception: err as Error });
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
78
|
+
`,
|
|
79
|
+
createIntrinsic("hbr", {})
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The binary entry point for the Shell Shock project.
|
|
84
|
+
*/
|
|
85
|
+
function BinEntry(props) {
|
|
86
|
+
const { prefix, postfix, builtinImports, imports, children, ...rest } = props;
|
|
87
|
+
const context = usePowerlines();
|
|
88
|
+
const bins = computed(() => getUnique(Object.values(context.config.bin)));
|
|
89
|
+
return createComponent(For, {
|
|
90
|
+
get each() {
|
|
91
|
+
return bins.value;
|
|
92
|
+
},
|
|
93
|
+
children: (bin) => createComponent(EntryFile, mergeProps(rest, {
|
|
94
|
+
get path() {
|
|
95
|
+
return findFileName(replaceExtension(bin));
|
|
96
|
+
},
|
|
97
|
+
typeDefinition: {
|
|
98
|
+
file: bin,
|
|
99
|
+
output: "bin"
|
|
100
|
+
},
|
|
101
|
+
get imports() {
|
|
102
|
+
return defu({ didyoumean2: [
|
|
103
|
+
{
|
|
104
|
+
name: "didYouMean",
|
|
105
|
+
default: true
|
|
106
|
+
},
|
|
107
|
+
{ name: "ReturnTypeEnums" },
|
|
108
|
+
{ name: "ThresholdTypeEnums" }
|
|
109
|
+
] }, imports ?? {}, Object.entries(context.commands).filter(([, command]) => command.isVirtual).reduce((ret, [name, command]) => {
|
|
110
|
+
ret[`./${command.name}`] = [{
|
|
111
|
+
name: "handler",
|
|
112
|
+
alias: `handle${pascalCase(name)}`
|
|
113
|
+
}];
|
|
114
|
+
return ret;
|
|
115
|
+
}, {}));
|
|
116
|
+
},
|
|
117
|
+
get builtinImports() {
|
|
118
|
+
return defu(builtinImports ?? {}, {
|
|
119
|
+
console: [
|
|
120
|
+
"error",
|
|
121
|
+
"verbose",
|
|
122
|
+
"table"
|
|
123
|
+
],
|
|
124
|
+
utils: ["hasFlag", "exit"]
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
get children() {
|
|
128
|
+
return [
|
|
129
|
+
createComponent(Show, {
|
|
130
|
+
get when() {
|
|
131
|
+
return Boolean(prefix);
|
|
132
|
+
},
|
|
133
|
+
get children() {
|
|
134
|
+
return [
|
|
135
|
+
prefix,
|
|
136
|
+
createIntrinsic("hbr", {}),
|
|
137
|
+
createIntrinsic("hbr", {})
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
}),
|
|
141
|
+
createComponent(TSDoc, { get heading() {
|
|
142
|
+
return `Binary entry point for the ${getAppTitle(context)} CLI application.`;
|
|
143
|
+
} }),
|
|
144
|
+
createComponent(FunctionDeclaration, {
|
|
145
|
+
async: true,
|
|
146
|
+
returnType: "any",
|
|
147
|
+
name: "main",
|
|
148
|
+
get children() {
|
|
149
|
+
return [
|
|
150
|
+
createComponent(IfStatement, {
|
|
151
|
+
condition: code`hasFlag(["version", "v"])`,
|
|
152
|
+
get children() {
|
|
153
|
+
return code`console.log(${context?.packageJson.version ? `"${context?.packageJson.version}"` : "0.0.1"});
|
|
154
|
+
return;`;
|
|
155
|
+
}
|
|
156
|
+
}),
|
|
157
|
+
createIntrinsic("hbr", {}),
|
|
158
|
+
createIntrinsic("hbr", {}),
|
|
159
|
+
children,
|
|
160
|
+
createIntrinsic("hbr", {})
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
}),
|
|
164
|
+
createIntrinsic("hbr", {}),
|
|
165
|
+
createIntrinsic("hbr", {}),
|
|
166
|
+
createIntrinsic("hbr", {}),
|
|
167
|
+
createComponent(Show, {
|
|
168
|
+
get when() {
|
|
169
|
+
return Boolean(postfix);
|
|
170
|
+
},
|
|
171
|
+
get fallback() {
|
|
172
|
+
return createComponent(RunApplication, {});
|
|
173
|
+
},
|
|
174
|
+
children: postfix
|
|
175
|
+
}),
|
|
176
|
+
createIntrinsic("hbr", {})
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
}))
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//#endregion
|
|
184
|
+
export { BinEntry, RunApplication };
|
|
185
|
+
//# sourceMappingURL=bin-entry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-entry.mjs","names":["code","computed","For","Show","FunctionDeclaration","IfStatement","usePowerlines","EntryFile","TSDoc","getAppTitle","getUnique","findFileName","replaceExtension","pascalCase","defu","RunApplication","_$createIntrinsic","BinEntry","props","prefix","postfix","builtinImports","imports","children","rest","context","bins","Object","values","config","bin","_$createComponent","each","value","_$mergeProps","path","typeDefinition","file","output","didyoumean2","name","default","entries","commands","filter","command","isVirtual","reduce","ret","alias","console","utils","when","Boolean","heading","async","returnType","condition","packageJson","version","fallback"],"sources":["../../src/components/bin-entry.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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { TypescriptFileImports } from \"@powerlines/plugin-alloy/types/components\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { TSDoc } from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { getAppTitle } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport { getUnique } from \"@stryke/helpers/get-unique\";\nimport { findFileName } from \"@stryke/path/file-path-fns\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\n/**\n * Runs the application main logic with proper exit handling.\n */\nexport function RunApplication() {\n return (\n <>\n <hbr />\n <hbr />\n {code`// Run the application main logic inside an asynchronous IIFE\n (async () => {\n try {\n process.on(\"exit\", () => exit({\n skipExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n exception: err || new Error(\\`An \\${type === \"unhandledRejection\" ? \"unhandled promise rejection\" : \"uncaught exception\"} occurred during processing - the application is shutting down.\\`)\n }));\n }\n\n const result = await main();\n if (result?.error) {\n error(result.error);\n }\n\n exit();\n } catch (err) {\n verbose(\"An exception occurred during processing\");\n exit({ exception: err as Error });\n }\n })();\n `}\n <hbr />\n </>\n );\n}\n\nexport interface BinEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"hashbang\"\n> {\n prefix?: Children;\n postfix?: Children;\n children: Children;\n}\n\n/**\n * The binary entry point for the Shell Shock project.\n */\nexport function BinEntry(props: BinEntryProps) {\n const { prefix, postfix, builtinImports, imports, children, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const bins = computed(() => getUnique(Object.values(context.config.bin)));\n\n return (\n <For each={bins.value}>\n {bin => (\n <EntryFile\n {...rest}\n path={findFileName(replaceExtension(bin))}\n typeDefinition={{\n file: bin,\n output: \"bin\"\n }}\n imports={defu(\n {\n didyoumean2: [\n { name: \"didYouMean\", default: true },\n { name: \"ReturnTypeEnums\" },\n { name: \"ThresholdTypeEnums\" }\n ]\n },\n imports ?? {},\n Object.entries(context.commands)\n .filter(([, command]) => command.isVirtual)\n .reduce((ret, [name, command]) => {\n ret[`./${command.name}`] = [\n { name: \"handler\", alias: `handle${pascalCase(name)}` }\n ];\n\n return ret;\n }, {} as TypescriptFileImports)\n )}\n builtinImports={defu(builtinImports ?? {}, {\n console: [\"error\", \"verbose\", \"table\"],\n utils: [\"hasFlag\", \"exit\"]\n })}>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n <TSDoc\n heading={`Binary entry point for the ${getAppTitle(context)} CLI application.`}></TSDoc>\n <FunctionDeclaration async returnType=\"any\" name=\"main\">\n <IfStatement condition={code`hasFlag([\"version\", \"v\"])`}>\n {code`console.log(${context?.packageJson.version ? `\"${context?.packageJson.version}\"` : \"0.0.1\"});\n return;`}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <hbr />\n <Show when={Boolean(postfix)} fallback={<RunApplication />}>\n {postfix}\n </Show>\n <hbr />\n </EntryFile>\n )}\n </For>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAqCA,SAAgBe,iBAAiB;AAC/B,QAAA;EAAAC,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAIKhB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDJgB,gBAAA,OAAA,EAAA,CAAA;EAAA;;;;;AAkBP,SAAgBC,SAASC,OAAsB;CAC7C,MAAM,EAAEC,QAAQC,SAASC,gBAAgBC,SAASC,UAAU,GAAGC,SAASN;CAExE,MAAMO,UAAUnB,eAAoC;CACpD,MAAMoB,OAAOzB,eAAeS,UAAUiB,OAAOC,OAAOH,QAAQI,OAAOC,IAAI,CAAC,CAAC;AAEzE,QAAAC,gBACG7B,KAAG;EAAA,IAAC8B,OAAI;AAAA,UAAEN,KAAKO;;EAAKV,WAClBO,QAAGC,gBACDxB,WAAS2B,WACJV,MAAI;GAAA,IACRW,OAAI;AAAA,WAAExB,aAAaC,iBAAiBkB,IAAI,CAAC;;GACzCM,gBAAgB;IACdC,MAAMP;IACNQ,QAAQ;IACT;GAAA,IACDhB,UAAO;AAAA,WAAER,KACP,EACEyB,aAAa;KACX;MAAEC,MAAM;MAAcC,SAAS;MAAM;KACrC,EAAED,MAAM,mBAAmB;KAC3B,EAAEA,MAAM,sBAAsB;KAAA,EAEjC,EACDlB,WAAW,EAAE,EACbK,OAAOe,QAAQjB,QAAQkB,SAAS,CAC7BC,QAAQ,GAAGC,aAAaA,QAAQC,UAAU,CAC1CC,QAAQC,KAAK,CAACR,MAAMK,aAAa;AAChCG,SAAI,KAAKH,QAAQL,UAAU,CACzB;MAAEA,MAAM;MAAWS,OAAO,SAASpC,WAAW2B,KAAK;MAAI,CACxD;AAED,YAAOQ;OACN,EAA2B,CAClC,CAAC;;GAAA,IACD3B,iBAAc;AAAA,WAAEP,KAAKO,kBAAkB,EAAE,EAAE;KACzC6B,SAAS;MAAC;MAAS;MAAW;MAAQ;KACtCC,OAAO,CAAC,WAAW,OAAM;KAC1B,CAAC;;GAAA,IAAA5B,WAAA;AAAA,WAAA;KAAAQ,gBACD5B,MAAI;MAAA,IAACiD,OAAI;AAAA,cAAEC,QAAQlC,OAAO;;MAAA,IAAAI,WAAA;AAAA,cAAA;QACxBJ;QAAMH,gBAAA,OAAA,EAAA,CAAA;QAAAA,gBAAA,OAAA,EAAA,CAAA;QAAA;;MAAA,CAAA;KAAAe,gBAIRvB,OAAK,EAAA,IACJ8C,UAAO;AAAA,aAAE,8BAA8B7C,YAAYgB,QAAQ,CAAA;QAAmB,CAAA;KAAAM,gBAC/E3B,qBAAmB;MAACmD,OAAK;MAACC,YAAU;MAAOhB,MAAI;MAAA,IAAAjB,WAAA;AAAA,cAAA;QAAAQ,gBAC7C1B,aAAW;SAACoD,WAAWzD,IAAI;SAA2B,IAAAuB,WAAA;AAAA,iBACpDvB,IAAI,eAAeyB,SAASiC,YAAYC,UAAU,IAAIlC,SAASiC,YAAYC,QAAO,KAAM,QAAO;;;SAC5F,CAAA;QAAA3C,gBAAA,OAAA,EAAA,CAAA;QAAAA,gBAAA,OAAA,EAAA,CAAA;QAILO;QAAQP,gBAAA,OAAA,EAAA,CAAA;QAAA;;MAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAe,gBAMV5B,MAAI;MAAA,IAACiD,OAAI;AAAA,cAAEC,QAAQjC,QAAQ;;MAAA,IAAEwC,WAAQ;AAAA,cAAA7B,gBAAGhB,gBAAc,EAAA,CAAA;;MAAAQ,UACpDH;MAAO,CAAA;KAAAJ,gBAAA,OAAA,EAAA,CAAA;KAAA;;GAAA,CAAA,CAAA;EAIb,CAAA"}
|