@shell-shock/preset-script 0.4.1 → 0.5.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/banner-function-declaration.cjs +1 -1
- package/dist/components/banner-function-declaration.cjs.map +1 -1
- package/dist/components/banner-function-declaration.mjs +1 -1
- package/dist/components/banner-function-declaration.mjs.map +1 -1
- package/dist/components/bin-entry.cjs +6 -3
- package/dist/components/bin-entry.cjs.map +1 -1
- package/dist/components/bin-entry.d.cts.map +1 -1
- package/dist/components/bin-entry.d.mts.map +1 -1
- package/dist/components/bin-entry.mjs +6 -3
- package/dist/components/bin-entry.mjs.map +1 -1
- package/dist/components/command-entry.cjs +112 -74
- package/dist/components/command-entry.cjs.map +1 -1
- package/dist/components/command-entry.d.cts.map +1 -1
- package/dist/components/command-entry.d.mts.map +1 -1
- package/dist/components/command-entry.mjs +114 -76
- package/dist/components/command-entry.mjs.map +1 -1
- package/dist/components/command-router.cjs +5 -5
- package/dist/components/command-router.cjs.map +1 -1
- package/dist/components/command-router.d.cts +1 -1
- package/dist/components/command-router.d.cts.map +1 -1
- package/dist/components/command-router.d.mts +1 -1
- package/dist/components/command-router.d.mts.map +1 -1
- package/dist/components/command-router.mjs +5 -5
- package/dist/components/command-router.mjs.map +1 -1
- package/dist/components/console-builtin.cjs +22 -16
- package/dist/components/console-builtin.cjs.map +1 -1
- package/dist/components/console-builtin.d.cts +1 -0
- package/dist/components/console-builtin.d.cts.map +1 -1
- package/dist/components/console-builtin.d.mts +1 -0
- package/dist/components/console-builtin.d.mts.map +1 -1
- package/dist/components/console-builtin.mjs +22 -16
- package/dist/components/console-builtin.mjs.map +1 -1
- package/dist/components/help.cjs +27 -20
- package/dist/components/help.cjs.map +1 -1
- package/dist/components/help.d.cts +9 -9
- package/dist/components/help.d.cts.map +1 -1
- package/dist/components/help.d.mts +9 -9
- package/dist/components/help.d.mts.map +1 -1
- package/dist/components/help.mjs +28 -21
- package/dist/components/help.mjs.map +1 -1
- package/dist/components/helpers.cjs +54 -0
- package/dist/components/helpers.cjs.map +1 -0
- package/dist/components/helpers.d.cts +29 -0
- package/dist/components/helpers.d.cts.map +1 -0
- package/dist/components/helpers.d.mts +29 -0
- package/dist/components/helpers.d.mts.map +1 -0
- package/dist/components/helpers.mjs +50 -0
- package/dist/components/helpers.mjs.map +1 -0
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.d.cts +2 -2
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +2 -2
- package/dist/components/utils-builtin.cjs +160 -6
- package/dist/components/utils-builtin.cjs.map +1 -1
- package/dist/components/utils-builtin.d.cts +9 -8
- package/dist/components/utils-builtin.d.cts.map +1 -1
- package/dist/components/utils-builtin.d.mts +9 -8
- package/dist/components/utils-builtin.d.mts.map +1 -1
- package/dist/components/utils-builtin.mjs +161 -8
- package/dist/components/utils-builtin.mjs.map +1 -1
- package/dist/components/virtual-command-entry.cjs +12 -8
- package/dist/components/virtual-command-entry.cjs.map +1 -1
- package/dist/components/virtual-command-entry.mjs +12 -8
- package/dist/components/virtual-command-entry.mjs.map +1 -1
- package/dist/helpers/ansi-utils.cjs +4 -4
- package/dist/helpers/ansi-utils.cjs.map +1 -1
- package/dist/helpers/ansi-utils.mjs +4 -4
- package/dist/helpers/ansi-utils.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types/plugin.d.cts.map +1 -1
- package/package.json +24 -10
|
@@ -81,7 +81,7 @@ function BannerFunctionBodyDeclaration(props) {
|
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
${command?.title ? `${insertNewlineBeforeCommand ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); ` : ""}
|
|
84
|
-
${`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command.title}").length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command.title}").length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `} ` : ""}
|
|
84
|
+
${`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command.title}").length ${command.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.icon ? `${command.icon} ` : ""}${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command.title}").length ${command.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `} ` : ""}
|
|
85
85
|
|
|
86
86
|
splitText(
|
|
87
87
|
colors.bold(${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}("${description.replace(/"/g, "\\\"")}")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-function-declaration.cjs","names":["code","computed","FunctionDeclaration","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","theme","context","header","labels","banner","packageJson","version","description","footer","title","test","value","toLowerCase","replace","trim","_$createComponent","name","doc","BannerFunctionBodyDeclaration","insertNewlineBeforeCommand","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","_$createIntrinsic","_$memo","topLeft","icons","top","topRight","bottomLeft","bottom","bottomRight"],"sources":["../../src/components/banner-function-declaration.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 } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { useTheme } from \"../contexts\";\nimport type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<ScriptPresetContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || \"1.0.0\"}`\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n\n const title = computed(() =>\n getAppTitle(context) ||\n /(?:cli|command line|command-line)\\s+(?:application|app)?$/.test(\n header.value.toLowerCase()\n )\n ? header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()\n : `${header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()} Command Line Application`\n );\n\n return (\n <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand>\n {children}\n </BannerFunctionBodyDeclaration>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isCI || isMinimal) {\n return;\n } `}\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n {code`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.banner.header.${variant}(\"${\n header\n }\")) + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n splitText(\n ${title ? `\"${title}\"` : \"title\"},\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `\n : \"\"\n }\n ${`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${command.title}\").length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.command.${\n variant\n }(\"${command.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command.title}\").length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.replace(/\"/g, '\\\\\"')}\")),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"banner-function-declaration.cjs","names":["code","computed","FunctionDeclaration","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","theme","context","header","labels","banner","packageJson","version","description","footer","title","test","value","toLowerCase","replace","trim","_$createComponent","name","doc","BannerFunctionBodyDeclaration","insertNewlineBeforeCommand","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","_$createIntrinsic","_$memo","topLeft","icons","top","topRight","icon","bottomLeft","bottom","bottomRight"],"sources":["../../src/components/banner-function-declaration.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 } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { useTheme } from \"../contexts\";\nimport type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<ScriptPresetContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || \"1.0.0\"}`\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n\n const title = computed(() =>\n getAppTitle(context) ||\n /(?:cli|command line|command-line)\\s+(?:application|app)?$/.test(\n header.value.toLowerCase()\n )\n ? header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()\n : `${header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()} Command Line Application`\n );\n\n return (\n <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand>\n {children}\n </BannerFunctionBodyDeclaration>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isCI || isMinimal) {\n return;\n } `}\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n {code`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.banner.header.${variant}(\"${\n header\n }\")) + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n splitText(\n ${title ? `\"${title}\"` : \"title\"},\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `\n : \"\"\n }\n ${`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${\n command.title\n }\").length ${command.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.command.${\n variant\n }(\"${command.icon ? `${command.icon} ` : \"\"}${command.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command.title}\").length ${\n command.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.replace(/\"/g, '\\\\\"')}\")),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ function BannerFunctionBodyDeclaration(props) {
|
|
|
80
80
|
});
|
|
81
81
|
|
|
82
82
|
${command?.title ? `${insertNewlineBeforeCommand ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); ` : ""}
|
|
83
|
-
${`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command.title}").length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command.title}").length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `} ` : ""}
|
|
83
|
+
${`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command.title}").length ${command.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.icon ? `${command.icon} ` : ""}${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command.title}").length ${command.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `} ` : ""}
|
|
84
84
|
|
|
85
85
|
splitText(
|
|
86
86
|
colors.bold(${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}("${description.replace(/"/g, "\\\"")}")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-function-declaration.mjs","names":["code","computed","FunctionDeclaration","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","theme","context","header","labels","banner","packageJson","version","description","footer","title","test","value","toLowerCase","replace","trim","_$createComponent","name","doc","BannerFunctionBodyDeclaration","insertNewlineBeforeCommand","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","_$createIntrinsic","_$memo","topLeft","icons","top","topRight","bottomLeft","bottom","bottomRight"],"sources":["../../src/components/banner-function-declaration.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 } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { useTheme } from \"../contexts\";\nimport type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<ScriptPresetContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || \"1.0.0\"}`\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n\n const title = computed(() =>\n getAppTitle(context) ||\n /(?:cli|command line|command-line)\\s+(?:application|app)?$/.test(\n header.value.toLowerCase()\n )\n ? header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()\n : `${header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()} Command Line Application`\n );\n\n return (\n <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand>\n {children}\n </BannerFunctionBodyDeclaration>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isCI || isMinimal) {\n return;\n } `}\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n {code`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.banner.header.${variant}(\"${\n header\n }\")) + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n splitText(\n ${title ? `\"${title}\"` : \"title\"},\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `\n : \"\"\n }\n ${`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${command.title}\").length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.command.${\n variant\n }(\"${command.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command.title}\").length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.replace(/\"/g, '\\\\\"')}\")),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"banner-function-declaration.mjs","names":["code","computed","FunctionDeclaration","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","theme","context","header","labels","banner","packageJson","version","description","footer","title","test","value","toLowerCase","replace","trim","_$createComponent","name","doc","BannerFunctionBodyDeclaration","insertNewlineBeforeCommand","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","_$createIntrinsic","_$memo","topLeft","icons","top","topRight","icon","bottomLeft","bottom","bottomRight"],"sources":["../../src/components/banner-function-declaration.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 } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { useTheme } from \"../contexts\";\nimport type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<ScriptPresetContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || \"1.0.0\"}`\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n\n const title = computed(() =>\n getAppTitle(context) ||\n /(?:cli|command line|command-line)\\s+(?:application|app)?$/.test(\n header.value.toLowerCase()\n )\n ? header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()\n : `${header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()} Command Line Application`\n );\n\n return (\n <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand>\n {children}\n </BannerFunctionBodyDeclaration>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isCI || isMinimal) {\n return;\n } `}\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n {code`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.banner.header.${variant}(\"${\n header\n }\")) + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n splitText(\n ${title ? `\"${title}\"` : \"title\"},\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `\n : \"\"\n }\n ${`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${\n command.title\n }\").length ${command.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.command.${\n variant\n }(\"${command.icon ? `${command.icon} ` : \"\"}${command.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command.title}\").length ${\n command.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.replace(/\"/g, '\\\\\"')}\")),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -23,9 +23,8 @@ function RunApplication() {
|
|
|
23
23
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
24
24
|
__alloy_js_core.code`// Run the application main logic inside an asynchronous IIFE
|
|
25
25
|
(async () => {
|
|
26
|
+
const startDate = new Date();
|
|
26
27
|
try {
|
|
27
|
-
const startDate = new Date();
|
|
28
|
-
|
|
29
28
|
process.on("exit", () => exit({
|
|
30
29
|
startDate,
|
|
31
30
|
skipExit: true,
|
|
@@ -132,7 +131,11 @@ function BinEntry(props) {
|
|
|
132
131
|
"verbose",
|
|
133
132
|
"table"
|
|
134
133
|
],
|
|
135
|
-
utils: [
|
|
134
|
+
utils: [
|
|
135
|
+
"hasFlag",
|
|
136
|
+
"exit",
|
|
137
|
+
"isUnicodeSupported"
|
|
138
|
+
]
|
|
136
139
|
});
|
|
137
140
|
},
|
|
138
141
|
get children() {
|
|
@@ -1 +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
|
|
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 const startDate = new Date();\n try {\n process.on(\"exit\", () => exit({\n startDate,\n skipExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n startDate,\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n startDate,\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n startDate,\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n startDate,\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n startDate,\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({ startDate });\n } catch (err) {\n exit({ startDate, 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\", \"isUnicodeSupported\"]\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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAgEJ,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;MAAC;MAAW;MAAQ;MAAoB;KAChD,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin-entry.d.cts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;
|
|
1
|
+
{"version":3,"file":"bin-entry.d.cts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;AA2EiB,iBA3ED,cAAA,CAAA,CA2Ee,EA3ED,QA2EC;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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin-entry.d.mts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;
|
|
1
|
+
{"version":3,"file":"bin-entry.d.mts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;AA2EiB,iBA3ED,cAAA,CAAA,CA2Ee,EA3ED,QA2EC;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"}
|
|
@@ -21,9 +21,8 @@ function RunApplication() {
|
|
|
21
21
|
createIntrinsic("hbr", {}),
|
|
22
22
|
code`// Run the application main logic inside an asynchronous IIFE
|
|
23
23
|
(async () => {
|
|
24
|
+
const startDate = new Date();
|
|
24
25
|
try {
|
|
25
|
-
const startDate = new Date();
|
|
26
|
-
|
|
27
26
|
process.on("exit", () => exit({
|
|
28
27
|
startDate,
|
|
29
28
|
skipExit: true,
|
|
@@ -130,7 +129,11 @@ function BinEntry(props) {
|
|
|
130
129
|
"verbose",
|
|
131
130
|
"table"
|
|
132
131
|
],
|
|
133
|
-
utils: [
|
|
132
|
+
utils: [
|
|
133
|
+
"hasFlag",
|
|
134
|
+
"exit",
|
|
135
|
+
"isUnicodeSupported"
|
|
136
|
+
]
|
|
134
137
|
});
|
|
135
138
|
},
|
|
136
139
|
get children() {
|
|
@@ -1 +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
|
|
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 const startDate = new Date();\n try {\n process.on(\"exit\", () => exit({\n startDate,\n skipExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n startDate,\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n startDate,\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n startDate,\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n startDate,\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n startDate,\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({ startDate });\n } catch (err) {\n exit({ startDate, 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\", \"isUnicodeSupported\"]\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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEJgB,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;MAAC;MAAW;MAAQ;MAAoB;KAChD,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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_components_banner_function_declaration = require('./banner-function-declaration.cjs');
|
|
3
3
|
const require_components_help = require('./help.cjs');
|
|
4
|
+
const require_components_helpers = require('./helpers.cjs');
|
|
4
5
|
const require_components_virtual_command_entry = require('./virtual-command-entry.cjs');
|
|
5
6
|
let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
|
|
6
7
|
let __alloy_js_core = require("@alloy-js/core");
|
|
@@ -18,11 +19,29 @@ let __stryke_path_find = require("@stryke/path/find");
|
|
|
18
19
|
let __stryke_path_join = require("@stryke/path/join");
|
|
19
20
|
let __stryke_string_format_camel_case = require("@stryke/string-format/camel-case");
|
|
20
21
|
let __stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
|
|
22
|
+
let __stryke_string_format_kebab_case = require("@stryke/string-format/kebab-case");
|
|
21
23
|
|
|
22
24
|
//#region src/components/command-entry.tsx
|
|
23
25
|
function CommandInvocation(props) {
|
|
24
26
|
const { command } = props;
|
|
25
|
-
return [
|
|
27
|
+
return [
|
|
28
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
29
|
+
name: "__context",
|
|
30
|
+
get initializer() {
|
|
31
|
+
return __alloy_js_core.code`{ path: \`${command.segments.map((segment) => (0, __shell_shock_core_plugin_utils_context_helpers.isDynamicPathSegment)(segment) ? `\${${(0, __stryke_string_format_camel_case.camelCase)((0, __shell_shock_core_plugin_utils_context_helpers.getDynamicPathSegmentName)(segment))}}` : segment).join("/")}\`, segments: [${command.segments.map((segment) => (0, __shell_shock_core_plugin_utils_context_helpers.isDynamicPathSegment)(segment) ? (0, __stryke_string_format_camel_case.camelCase)((0, __shell_shock_core_plugin_utils_context_helpers.getDynamicPathSegmentName)(segment)) : `"${segment}"`).join(", ")}] }`;
|
|
32
|
+
}
|
|
33
|
+
}),
|
|
34
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
35
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
36
|
+
(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`
|
|
37
|
+
|
|
38
|
+
internal_commandContext.call(__context, () => {
|
|
39
|
+
return Promise.resolve(Reflect.apply(handle${(0, __stryke_string_format_pascal_case.pascalCase)(command.name)}, __context, [options${command.arguments.length > 0 ? `, ${command.arguments.map((argument) => (0, __stryke_string_format_camel_case.camelCase)(argument.name)).join(", ")}` : ""}]));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
`),
|
|
43
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
44
|
+
];
|
|
26
45
|
}
|
|
27
46
|
/**
|
|
28
47
|
* A component that generates the `handler` function declaration for a command.
|
|
@@ -30,76 +49,87 @@ function CommandInvocation(props) {
|
|
|
30
49
|
function CommandHandlerDeclaration(props) {
|
|
31
50
|
const { command, children } = props;
|
|
32
51
|
const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
|
|
33
|
-
return [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(0,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
52
|
+
return [
|
|
53
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__shell_shock_core_components_options_parser_logic.OptionsInterfaceDeclaration, { command }),
|
|
54
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
55
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
56
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDoc, {
|
|
57
|
+
get heading() {
|
|
58
|
+
return `The ${command.title} (${(0, __shell_shock_core_plugin_utils_context_helpers.getAppBin)(context)} ${command.segments.map((segment) => (0, __shell_shock_core_plugin_utils_context_helpers.isDynamicPathSegment)(segment) ? `[${(0, __stryke_string_format_constant_case.constantCase)((0, __shell_shock_core_plugin_utils_context_helpers.getDynamicPathSegmentName)(segment))}]` : segment).join(" ")}) command.`;
|
|
59
|
+
},
|
|
60
|
+
get children() {
|
|
61
|
+
return [
|
|
62
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDocRemarks, { get children() {
|
|
63
|
+
return `${command.description.replace(/\.+$/, "")}.`;
|
|
64
|
+
} }),
|
|
65
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
66
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDocTitle, { get children() {
|
|
67
|
+
return command.title;
|
|
68
|
+
} }),
|
|
69
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDocParam, {
|
|
70
|
+
name: "args",
|
|
71
|
+
children: `The command-line arguments passed to the command.`
|
|
72
|
+
})
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
}),
|
|
76
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
|
|
77
|
+
"export": true,
|
|
78
|
+
async: true,
|
|
79
|
+
name: "handler",
|
|
80
|
+
parameters: [{
|
|
81
|
+
name: "args",
|
|
82
|
+
type: "string[]",
|
|
83
|
+
default: "getArgs()"
|
|
84
|
+
}],
|
|
85
|
+
get children() {
|
|
86
|
+
return [
|
|
87
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__shell_shock_core_components_options_parser_logic.CommandParserLogic, {
|
|
88
|
+
command,
|
|
89
|
+
get envPrefix() {
|
|
90
|
+
return context.config.envPrefix;
|
|
91
|
+
},
|
|
92
|
+
get isCaseSensitive() {
|
|
93
|
+
return context.config.isCaseSensitive;
|
|
94
|
+
}
|
|
95
|
+
}),
|
|
96
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
97
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
98
|
+
__alloy_js_core.code`writeLine("");
|
|
99
|
+
banner(); `,
|
|
100
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
101
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
102
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
103
|
+
get condition() {
|
|
104
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.IsDebug, {});
|
|
105
|
+
},
|
|
106
|
+
get children() {
|
|
107
|
+
return __alloy_js_core.code`
|
|
108
|
+
writeLine("");
|
|
109
|
+
writeLine(colors.text.body.tertiary("Debug mode is enabled. Additional debug information may be logged to the console."));
|
|
110
|
+
|
|
111
|
+
writeLine("");
|
|
112
|
+
debug(\`Command path: ${command.segments.map((segment) => (0, __shell_shock_core_plugin_utils_context_helpers.isDynamicPathSegment)(segment) ? `\${${(0, __stryke_string_format_camel_case.camelCase)((0, __shell_shock_core_plugin_utils_context_helpers.getDynamicPathSegmentName)(segment))}}` : segment).join(" / ")} \\n\\nOptions: \\n${Object.values(command.options).map((option) => ` - ${(0, __stryke_string_format_kebab_case.kebabCase)(option.name)}: \${options.${(0, __stryke_string_format_camel_case.camelCase)(option.name)} === undefined ? "" : JSON.stringify(options.${(0, __stryke_string_format_camel_case.camelCase)(option.name)})}`).join("\\n")}${command.arguments.length > 0 ? ` \\n\\nArguments: \\n${command.arguments.map((argument) => ` - ${(0, __stryke_string_format_kebab_case.kebabCase)(argument.name)}: \${${(0, __stryke_string_format_camel_case.camelCase)(argument.name)} === undefined ? "" : JSON.stringify(${(0, __stryke_string_format_camel_case.camelCase)(argument.name)})}`).join("\\n")}` : ""}\`); `;
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
116
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
117
|
+
children,
|
|
118
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
119
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
120
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
121
|
+
condition: __alloy_js_core.code`options.help`,
|
|
122
|
+
get children() {
|
|
123
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_help.CommandHelp, { command });
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseClause, { get children() {
|
|
127
|
+
return [(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}), (0, __alloy_js_core_jsx_runtime.createComponent)(CommandInvocation, { command })];
|
|
128
|
+
} })
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
})
|
|
132
|
+
];
|
|
103
133
|
}
|
|
104
134
|
/**
|
|
105
135
|
* The command entry point for the Shell Shock project.
|
|
@@ -107,7 +137,7 @@ function CommandHandlerDeclaration(props) {
|
|
|
107
137
|
function CommandEntry(props) {
|
|
108
138
|
const { command, imports, builtinImports, ...rest } = props;
|
|
109
139
|
const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
|
|
110
|
-
const filePath = (0, __alloy_js_core.computed)(() => (0, __stryke_path_join.joinPaths)(command.
|
|
140
|
+
const filePath = (0, __alloy_js_core.computed)(() => (0, __stryke_path_join.joinPaths)(command.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils_context_helpers.isDynamicPathSegment)(segment)).join("/"), "index.ts"));
|
|
111
141
|
const commandSourcePath = (0, __alloy_js_core.computed)(() => (0, __stryke_path_replace.replaceExtension)((0, __stryke_path_find.relativePath)((0, __stryke_path_join.joinPaths)(context.entryPath, (0, __stryke_path_find.findFilePath)(filePath.value)), command.entry.input?.file || command.entry.file)));
|
|
112
142
|
const typeDefinition = (0, __alloy_js_core.computed)(() => ({
|
|
113
143
|
...command.entry,
|
|
@@ -125,8 +155,14 @@ function CommandEntry(props) {
|
|
|
125
155
|
},
|
|
126
156
|
get builtinImports() {
|
|
127
157
|
return (0, defu.default)(builtinImports ?? {}, {
|
|
128
|
-
env: [
|
|
158
|
+
env: [
|
|
159
|
+
"env",
|
|
160
|
+
"isCI",
|
|
161
|
+
"isDevelopment",
|
|
162
|
+
"isDebug"
|
|
163
|
+
],
|
|
129
164
|
console: [
|
|
165
|
+
"debug",
|
|
130
166
|
"warn",
|
|
131
167
|
"error",
|
|
132
168
|
"table",
|
|
@@ -138,7 +174,9 @@ function CommandEntry(props) {
|
|
|
138
174
|
utils: [
|
|
139
175
|
"getArgs",
|
|
140
176
|
"hasFlag",
|
|
141
|
-
"isMinimal"
|
|
177
|
+
"isMinimal",
|
|
178
|
+
"isUnicodeSupported",
|
|
179
|
+
"internal_commandContext"
|
|
142
180
|
]
|
|
143
181
|
});
|
|
144
182
|
},
|