zod-args-parser 1.0.2 → 1.0.4
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/LICENSE +21 -0
- package/README.md +44 -13
- package/lib/commonjs/help.js +1 -1
- package/lib/commonjs/help.js.map +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/parser.js +1 -1
- package/lib/commonjs/parser.js.map +1 -1
- package/lib/module/help.js +1 -1
- package/lib/module/help.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/parser.js +1 -1
- package/lib/module/parser.js.map +1 -1
- package/lib/typescript/help.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +5 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/parser.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +41 -16
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +17 -2
- package/src/help.ts +11 -10
- package/src/index.ts +16 -4
- package/src/parser.ts +24 -7
- package/src/types.ts +69 -23
- package/lib/commonjs/types.js +0 -1
- package/lib/commonjs/types.js.map +0 -1
- package/lib/module/types.js +0 -1
- package/lib/module/types.js.map +0 -1
package/lib/module/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["chalk","concat","getDefaultValueFromSchema","indent","ln","print","println","transformOptionToArg","colors","title","bold","blue","description","white","default","dim","italic","optional","exampleTitle","yellow","example","command","option","cyan","argument","green","placeholder","hex","punctuation","printCliHelp","params","printOptions","arguments","length","undefined","noColors","Proxy","get","_len","str","Array","_key","join","c","customColors","Object","assign","isFirstParamCli","cliOptions","shift","subcommands","printTitle","toUpperCase","cliName","usage","options","allowPositional","longest","optionsToPrint","longestOptionIndent","prepareOptionsToPrint","commandsToPrint","longestSubcommandIndent","prepareCommandsToPrint","argsToPrint","longestArgIndent","prepareArgumentsToPrint","printPreparedOptions","printPreparedCommands","printPreparedArguments","normalizeExample","replace","printSubcommandHelp","subcommand","_len2","_key2","name","normalizeDesc","nameWithAliases","aliases","names","from","Set","map","defaultValue","type","push","JSON","stringify","isOptional","optLength","cmdLength","args","arg","def","spacing","coloredNames","split","help"],"sourceRoot":"../../src","sources":["help.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { concat, getDefaultValueFromSchema, indent, ln, print, println, transformOptionToArg } from \"./utils.js\";\n\nimport type { Argument, Cli, Option, PrintHelpOpt, Subcommand } from \"./types.js\";\n\n/** Colors */\nconst colors: NonNullable<Required<PrintHelpOpt[\"customColors\"]>> = {\n title: chalk.bold.blue,\n description: chalk.white,\n default: chalk.dim.italic,\n optional: chalk.dim.italic,\n exampleTitle: chalk.yellow,\n example: chalk.dim.italic,\n command: chalk.yellow,\n option: chalk.cyan,\n argument: chalk.green,\n placeholder: chalk.hex(\"#FF9800\"),\n punctuation: chalk.white.dim,\n};\n\ntype PreparedToPrint = {\n names: string;\n description: string;\n placeholder?: string;\n example?: string;\n default?: string;\n optional?: string;\n};\n\nfunction printCliHelp(params: [Cli, ...Subcommand[]], printOptions: PrintHelpOpt = {}) {\n printOptions.colors ??= true;\n\n const noColors = new Proxy(colors, {\n get: () => {\n return (...str: string[]) => str.join(\" \");\n },\n });\n\n const c = printOptions.colors ? colors : noColors;\n\n if (printOptions.customColors) {\n Object.assign(c, printOptions.customColors);\n }\n\n const isFirstParamCli = \"cliName\" in params[0];\n const cliOptions = (isFirstParamCli ? params.shift() : {}) as Cli;\n const subcommands = params as Subcommand[];\n\n /** Print a styled title */\n const printTitle = (title: string) => {\n print(c.title(` ${title.toUpperCase()} `));\n };\n\n // Print CLI usage\n const cliName = cliOptions.cliName ?? \"\";\n const usage =\n cliOptions.usage ??\n concat(\n c.punctuation(\"$\"),\n cliName,\n subcommands.length ? c.command(\"[command]\") : \"\",\n cliOptions.options?.length ? c.option(\"[options]\") : \"\",\n cliOptions.arguments?.length || cliOptions.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n printTitle(\"Usage\");\n println();\n println(indent(2), usage, ln(1));\n\n // Print CLI description\n if (cliOptions.description) {\n printTitle(\"Description\");\n println();\n println(indent(2), c.description(cliOptions.description), ln(1));\n }\n\n let longest = 0;\n\n // Prepare CLI options\n const [optionsToPrint, longestOptionIndent] = prepareOptionsToPrint(cliOptions.options);\n if (longestOptionIndent > longest) longest = longestOptionIndent;\n\n // Prepare CLI commands\n const [commandsToPrint, longestSubcommandIndent] = prepareCommandsToPrint(subcommands);\n if (longestSubcommandIndent > longest) longest = longestSubcommandIndent;\n\n // Prepare CLI arguments\n const [argsToPrint, longestArgIndent] = prepareArgumentsToPrint(cliOptions.arguments);\n if (longestArgIndent > longest) longest = longestArgIndent;\n\n // Print CLI options\n printPreparedOptions(optionsToPrint, c, longest);\n\n // Print CLI commands\n printPreparedCommands(commandsToPrint, c, longest);\n\n // Print CLI arguments\n printPreparedArguments(argsToPrint, c, longest);\n\n // Print CLI example\n if (cliOptions.example) {\n printTitle(\"Example\");\n println();\n const normalizeExample = cliOptions.example.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.example(normalizeExample), ln(1));\n }\n}\n\nfunction printSubcommandHelp(subcommand: Subcommand, printOptions: PrintHelpOpt = {}, cliName = \"\") {\n printOptions.colors ??= true;\n\n const noColors = new Proxy(colors, {\n get: () => {\n return (...str: string[]) => str.join(\" \");\n },\n });\n\n const c = printOptions.colors ? colors : noColors;\n\n if (printOptions.customColors) {\n Object.assign(c, printOptions.customColors);\n }\n\n /** Print a styled title */\n const printTitle = (title: string) => {\n print(c.title(` ${title.toUpperCase()} `));\n };\n\n // Print command usage\n const usage = concat(\n c.punctuation(\"$\"),\n cliName,\n c.command(subcommand.name),\n subcommand.options?.length ? c.option(\"[options]\") : \"\",\n subcommand.arguments?.length || subcommand.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n printTitle(\"Usage\");\n println();\n println(indent(2), usage, ln(1));\n\n // Print command description\n if (subcommand.description) {\n printTitle(\"Description\");\n println();\n const normalizeDesc = subcommand.description.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.description(normalizeDesc), ln(1));\n }\n\n let longest = 0;\n\n // Prepare command options\n const [optionsToPrint, longestOptionIndent] = prepareOptionsToPrint(subcommand.options);\n if (longestOptionIndent > longest) longest = longestOptionIndent;\n\n // Prepare command arguments\n const [argsToPrint, longestArgIndent] = prepareArgumentsToPrint(subcommand.arguments);\n if (longestArgIndent > longest) longest = longestArgIndent;\n\n // Print command options\n printPreparedOptions(optionsToPrint, c, longest);\n\n // Print command arguments\n printPreparedArguments(argsToPrint, c, longest);\n\n // Print command example\n if (subcommand.example) {\n printTitle(\"Example\");\n println();\n const normalizeExample = subcommand.example.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.example(normalizeExample), ln(1));\n }\n}\n\n// * Prepare\nfunction prepareOptionsToPrint(options: Option[] | undefined): [PreparedToPrint[], number] {\n if (!options || !options.length) return [[], 0];\n\n const optionsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const option of options) {\n const nameWithAliases = option.aliases ? [...option.aliases, option.name] : [option.name];\n const names = Array.from(new Set(nameWithAliases.map(name => transformOptionToArg(name)))).join(\", \");\n\n const defaultValue = getDefaultValueFromSchema(option.type);\n\n const placeholder = option.placeholder ?? \" \";\n optionsToPrint.push({\n names,\n placeholder,\n description: option.description ?? option.type.description ?? \"\",\n default: typeof defaultValue !== \"undefined\" ? `(default: ${JSON.stringify(defaultValue)})` : \"\",\n optional: option.type.isOptional() ? \"[optional]\" : \"\",\n example: option.example ?? \"\",\n });\n\n const optLength = names.length + placeholder.length;\n\n if (optLength > longest) longest = optLength;\n }\n\n return [optionsToPrint, longest];\n}\n\nfunction prepareCommandsToPrint(subcommands: Subcommand[] | undefined): [PreparedToPrint[], number] {\n if (!subcommands || !subcommands.length) return [[], 0];\n\n const commandsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const subcommand of subcommands) {\n const { name, aliases, description } = subcommand;\n const names = Array.from(new Set([...(aliases ?? []), name])).join(\", \");\n\n const placeholder =\n subcommand.placeholder ?? (subcommand.options ? \"[options]\" : subcommand.allowPositional ? \"<args>\" : \" \");\n\n commandsToPrint.push({ names, placeholder, description: description ?? \"\" });\n\n const cmdLength = names.length + placeholder.length;\n if (cmdLength > longest) longest = cmdLength;\n }\n\n return [commandsToPrint, longest];\n}\n\nfunction prepareArgumentsToPrint(args: Argument[] | undefined): [PreparedToPrint[], number] {\n if (!args || !args.length) return [[], 0];\n\n const argsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const arg of args) {\n const defaultValue = getDefaultValueFromSchema(arg.type);\n\n argsToPrint.push({\n names: arg.name,\n description: arg.description ?? \"\",\n default: typeof defaultValue !== \"undefined\" ? `(default: ${JSON.stringify(defaultValue)})` : \"\",\n optional: arg.type.isOptional() ? \"[optional]\" : \"\",\n example: arg.example ?? \"\",\n });\n\n const cmdLength = arg.name.length;\n if (cmdLength > longest) longest = cmdLength;\n }\n\n return [argsToPrint, longest];\n}\n\n// * Print\nfunction printPreparedOptions(optionsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!optionsToPrint.length) return;\n\n print(c.title(\" OPTIONS \"));\n\n println();\n\n for (const { names, placeholder, description, example, optional, default: def } of optionsToPrint) {\n const optLength = names.length + (placeholder?.length ?? 0);\n const spacing = longest + 1 - optLength;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 7) + c.punctuation(\"└\"));\n\n const coloredNames = names\n .split(/(,)/)\n .map(name => (name === \",\" ? c.punctuation(name) : c.option(name)))\n .join(\"\");\n\n println(\n indent(2),\n coloredNames,\n c.placeholder(placeholder),\n indent(spacing),\n c.description(normalizeDesc),\n def ? c.default(def) : c.optional(optional),\n );\n\n if (example) {\n const normalizeExample = example.replace(/\\n/g, \"\\n\" + indent(longest + 17));\n println(indent(longest + 6), c.punctuation(\"└\") + c.exampleTitle(\"Example:\"), c.example(normalizeExample));\n }\n }\n\n println();\n}\n\nfunction printPreparedCommands(commandsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!commandsToPrint.length) return;\n\n print(c.title(\" COMMANDS \"));\n\n println();\n\n for (const { names, placeholder, description } of commandsToPrint) {\n const optLength = names.length + (placeholder?.length ?? 0);\n const spacing = longest + 1 - optLength;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 7));\n\n const coloredNames = names\n .split(/(,)/)\n .map(name => (name === \",\" ? c.punctuation(name) : c.command(name)))\n .join(\"\");\n\n println(indent(2), coloredNames, c.placeholder(placeholder), indent(spacing), c.description(normalizeDesc));\n }\n\n println();\n}\n\nfunction printPreparedArguments(argsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!argsToPrint.length) return;\n\n print(c.title(\" ARGUMENTS \"));\n\n println();\n\n for (const { names, description, example, optional, default: def } of argsToPrint) {\n const spacing = longest + 2 - names.length;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 6) + c.punctuation(\"└\"));\n\n println(\n indent(2),\n c.argument(names),\n indent(spacing),\n c.description(normalizeDesc),\n def ? c.default(def) : c.optional(optional),\n );\n\n if (example) {\n const normalizeExample = example.replace(/\\n/g, \"\\n\" + indent(longest + 16));\n println(indent(longest + 5), c.punctuation(\"└\") + c.exampleTitle(\"Example:\"), c.example(normalizeExample));\n }\n }\n\n println();\n}\n\nexport const help = {\n printCliHelp,\n printSubcommandHelp,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["chalk","concat","getDefaultValueFromSchema","indent","ln","print","println","transformOptionToArg","colors","title","bold","blue","description","white","default","dim","italic","optional","exampleTitle","yellow","example","command","option","cyan","argument","green","placeholder","hex","punctuation","printCliHelp","params","printOptions","arguments","length","undefined","noColors","Proxy","get","_len","str","Array","_key","join","c","customColors","Object","assign","isFirstParamCli","cliOptions","shift","subcommands","printTitle","toUpperCase","cliName","usage","options","allowPositional","longest","optionsToPrint","longestOptionIndent","prepareOptionsToPrint","commandsToPrint","longestSubcommandIndent","prepareCommandsToPrint","argsToPrint","longestArgIndent","prepareArgumentsToPrint","printPreparedOptions","printPreparedCommands","printPreparedArguments","normalizeExample","replace","printSubcommandHelp","subcommand","_len2","_key2","name","normalizeDesc","nameWithAliases","aliases","names","from","Set","map","defaultValue","type","push","JSON","stringify","isOptional","optLength","cmdLength","args","arg","def","spacing","coloredNames","split","help"],"sourceRoot":"../../src","sources":["help.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { concat, getDefaultValueFromSchema, indent, ln, print, println, transformOptionToArg } from \"./utils.js\";\n\nimport type { Argument, Cli, Option, PrintHelpOpt, Subcommand } from \"./types.js\";\n\nconst colors: NonNullable<Required<PrintHelpOpt[\"customColors\"]>> = {\n title: chalk.bold.blue,\n description: chalk.white,\n default: chalk.dim.italic,\n optional: chalk.dim.italic,\n exampleTitle: chalk.yellow,\n example: chalk.dim,\n command: chalk.yellow,\n option: chalk.cyan,\n argument: chalk.green,\n placeholder: chalk.hex(\"#FF9800\"),\n punctuation: chalk.white.dim,\n};\n\ntype PreparedToPrint = {\n names: string;\n description: string;\n placeholder?: string;\n example?: string;\n default?: string;\n optional?: string;\n};\n\nfunction printCliHelp(params: [Cli, ...Subcommand[]], printOptions: PrintHelpOpt = {}) {\n printOptions.colors ??= true;\n\n const noColors = new Proxy(colors, {\n get: () => {\n return (...str: string[]) => str.join(\" \");\n },\n });\n\n const c = printOptions.colors ? colors : noColors;\n\n if (printOptions.customColors) {\n Object.assign(c, printOptions.customColors);\n }\n\n const isFirstParamCli = \"cliName\" in params[0];\n const cliOptions = (isFirstParamCli ? params.shift() : {}) as Cli;\n const subcommands = params as Subcommand[];\n\n /** Print a styled title */\n const printTitle = (title: string) => {\n print(c.title(` ${title.toUpperCase()} `));\n };\n\n // Print CLI usage\n const cliName = cliOptions.cliName ?? \"\";\n const usage =\n cliOptions.usage ??\n concat(\n c.punctuation(\"$\"),\n cliName,\n subcommands.length ? c.command(\"[command]\") : \"\",\n cliOptions.options?.length ? c.option(\"[options]\") : \"\",\n cliOptions.arguments?.length || cliOptions.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n printTitle(\"Usage\");\n println();\n println(indent(2), usage, ln(1));\n\n // Print CLI description\n if (cliOptions.description) {\n printTitle(\"Description\");\n println();\n println(indent(2), c.description(cliOptions.description), ln(1));\n }\n\n let longest = 0;\n\n // Prepare CLI options\n const [optionsToPrint, longestOptionIndent] = prepareOptionsToPrint(cliOptions.options);\n if (longestOptionIndent > longest) longest = longestOptionIndent;\n\n // Prepare CLI commands\n const [commandsToPrint, longestSubcommandIndent] = prepareCommandsToPrint(subcommands);\n if (longestSubcommandIndent > longest) longest = longestSubcommandIndent;\n\n // Prepare CLI arguments\n const [argsToPrint, longestArgIndent] = prepareArgumentsToPrint(cliOptions.arguments);\n if (longestArgIndent > longest) longest = longestArgIndent;\n\n // Print CLI options\n printPreparedOptions(optionsToPrint, c, longest);\n\n // Print CLI commands\n printPreparedCommands(commandsToPrint, c, longest);\n\n // Print CLI arguments\n printPreparedArguments(argsToPrint, c, longest);\n\n // Print CLI example\n if (cliOptions.example) {\n printTitle(\"Example\");\n println();\n const normalizeExample = cliOptions.example.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.example(normalizeExample), ln(1));\n }\n}\n\nfunction printSubcommandHelp(subcommand: Subcommand, printOptions: PrintHelpOpt = {}, cliName = \"\") {\n printOptions.colors ??= true;\n\n const noColors = new Proxy(colors, {\n get: () => {\n return (...str: string[]) => str.join(\" \");\n },\n });\n\n const c = printOptions.colors ? colors : noColors;\n\n if (printOptions.customColors) {\n Object.assign(c, printOptions.customColors);\n }\n\n /** Print a styled title */\n const printTitle = (title: string) => {\n print(c.title(` ${title.toUpperCase()} `));\n };\n\n // Print command usage\n const usage =\n subcommand.usage ??\n concat(\n c.punctuation(\"$\"),\n cliName,\n c.command(subcommand.name),\n subcommand.options?.length ? c.option(\"[options]\") : \"\",\n subcommand.arguments?.length || subcommand.allowPositional ? c.argument(\"<arguments>\") : \"\",\n );\n printTitle(\"Usage\");\n println();\n println(indent(2), usage, ln(1));\n\n // Print command description\n if (subcommand.description) {\n printTitle(\"Description\");\n println();\n const normalizeDesc = subcommand.description.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.description(normalizeDesc), ln(1));\n }\n\n let longest = 0;\n\n // Prepare command options\n const [optionsToPrint, longestOptionIndent] = prepareOptionsToPrint(subcommand.options);\n if (longestOptionIndent > longest) longest = longestOptionIndent;\n\n // Prepare command arguments\n const [argsToPrint, longestArgIndent] = prepareArgumentsToPrint(subcommand.arguments);\n if (longestArgIndent > longest) longest = longestArgIndent;\n\n // Print command options\n printPreparedOptions(optionsToPrint, c, longest);\n\n // Print command arguments\n printPreparedArguments(argsToPrint, c, longest);\n\n // Print command example\n if (subcommand.example) {\n printTitle(\"Example\");\n println();\n const normalizeExample = subcommand.example.replace(/\\n/g, \"\\n\" + indent(3));\n println(indent(2), c.example(normalizeExample), ln(1));\n }\n}\n\n// * Prepare\nfunction prepareOptionsToPrint(options: Option[] | undefined): [PreparedToPrint[], number] {\n if (!options || !options.length) return [[], 0];\n\n const optionsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const option of options) {\n const nameWithAliases = option.aliases ? [...option.aliases, option.name] : [option.name];\n const names = Array.from(new Set(nameWithAliases.map(name => transformOptionToArg(name)))).join(\", \");\n\n const defaultValue = getDefaultValueFromSchema(option.type);\n\n const placeholder = option.placeholder ?? \" \";\n optionsToPrint.push({\n names,\n placeholder,\n description: option.description ?? option.type.description ?? \"\",\n default: typeof defaultValue !== \"undefined\" ? `(default: ${JSON.stringify(defaultValue)})` : \"\",\n optional: option.type.isOptional() ? \"[optional]\" : \"\",\n example: option.example ?? \"\",\n });\n\n const optLength = names.length + placeholder.length;\n\n if (optLength > longest) longest = optLength;\n }\n\n return [optionsToPrint, longest];\n}\n\nfunction prepareCommandsToPrint(subcommands: Subcommand[] | undefined): [PreparedToPrint[], number] {\n if (!subcommands || !subcommands.length) return [[], 0];\n\n const commandsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const subcommand of subcommands) {\n const { name, aliases, description } = subcommand;\n const names = Array.from(new Set([...(aliases ?? []), name])).join(\", \");\n\n const placeholder =\n subcommand.placeholder ?? (subcommand.options ? \"[options]\" : subcommand.allowPositional ? \"<args>\" : \" \");\n\n commandsToPrint.push({ names, placeholder, description: description ?? \"\" });\n\n const cmdLength = names.length + placeholder.length;\n if (cmdLength > longest) longest = cmdLength;\n }\n\n return [commandsToPrint, longest];\n}\n\nfunction prepareArgumentsToPrint(args: Argument[] | undefined): [PreparedToPrint[], number] {\n if (!args || !args.length) return [[], 0];\n\n const argsToPrint: PreparedToPrint[] = [];\n let longest = 0;\n\n for (const arg of args) {\n const defaultValue = getDefaultValueFromSchema(arg.type);\n\n argsToPrint.push({\n names: arg.name,\n description: arg.description ?? \"\",\n default: typeof defaultValue !== \"undefined\" ? `(default: ${JSON.stringify(defaultValue)})` : \"\",\n optional: arg.type.isOptional() ? \"[optional]\" : \"\",\n example: arg.example ?? \"\",\n });\n\n const cmdLength = arg.name.length;\n if (cmdLength > longest) longest = cmdLength;\n }\n\n return [argsToPrint, longest];\n}\n\n// * Print\nfunction printPreparedOptions(optionsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!optionsToPrint.length) return;\n\n print(c.title(\" OPTIONS \"));\n\n println();\n\n for (const { names, placeholder, description, example, optional, default: def } of optionsToPrint) {\n const optLength = names.length + (placeholder?.length ?? 0);\n const spacing = longest + 1 - optLength;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 7) + c.punctuation(\"└\"));\n\n const coloredNames = names\n .split(/(,)/)\n .map(name => (name === \",\" ? c.punctuation(name) : c.option(name)))\n .join(\"\");\n\n println(\n indent(2),\n coloredNames,\n c.placeholder(placeholder),\n indent(spacing),\n c.description(normalizeDesc),\n def ? c.default(def) : c.optional(optional),\n );\n\n if (example) {\n const normalizeExample = example.replace(/\\n/g, \"\\n\" + indent(longest + 17));\n println(indent(longest + 6), c.punctuation(\"└\") + c.exampleTitle(\"Example:\"), c.example(normalizeExample));\n }\n }\n\n println();\n}\n\nfunction printPreparedCommands(commandsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!commandsToPrint.length) return;\n\n print(c.title(\" COMMANDS \"));\n\n println();\n\n for (const { names, placeholder, description } of commandsToPrint) {\n const optLength = names.length + (placeholder?.length ?? 0);\n const spacing = longest + 1 - optLength;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 7) + c.punctuation(\"└\"));\n\n const coloredNames = names\n .split(/(,)/)\n .map(name => (name === \",\" ? c.punctuation(name) : c.command(name)))\n .join(\"\");\n\n println(indent(2), coloredNames, c.placeholder(placeholder), indent(spacing), c.description(normalizeDesc));\n }\n\n println();\n}\n\nfunction printPreparedArguments(argsToPrint: PreparedToPrint[], c: typeof colors, longest: number) {\n if (!argsToPrint.length) return;\n\n print(c.title(\" ARGUMENTS \"));\n\n println();\n\n for (const { names, description, example, optional, default: def } of argsToPrint) {\n const spacing = longest + 2 - names.length;\n const normalizeDesc = description.replace(/\\n/g, \"\\n\" + indent(longest + 6) + c.punctuation(\"└\"));\n\n println(\n indent(2),\n c.argument(names),\n indent(spacing),\n c.description(normalizeDesc),\n def ? c.default(def) : c.optional(optional),\n );\n\n if (example) {\n const normalizeExample = example.replace(/\\n/g, \"\\n\" + indent(longest + 16));\n println(indent(longest + 5), c.punctuation(\"└\") + c.exampleTitle(\"Example:\"), c.example(normalizeExample));\n }\n }\n\n println();\n}\n\nexport const help = {\n printCliHelp,\n printSubcommandHelp,\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{help}from"./help.js";import{parse,safeParse}from"./parser.js";function createSubcommand(input){return Object.assign(input,{setAction:action=>input.action=action});}function createCli(input){return Object.assign(input,{setAction:action=>input.action=action});}const{printCliHelp,printSubcommandHelp}=help;export{createCli,createSubcommand,parse,printCliHelp,printSubcommandHelp,safeParse};
|
|
1
|
+
import{help}from"./help.js";import{parse,safeParse}from"./parser.js";function createSubcommand(input){return Object.assign(input,{setAction:action=>input.action=action});}function createCli(input){return Object.assign(input,{setAction:action=>input.action=action});}function createOptions(options){return options;}const{printCliHelp,printSubcommandHelp}=help;export{createCli,createSubcommand,createOptions,parse,printCliHelp,printSubcommandHelp,safeParse};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["help","parse","safeParse","createSubcommand","input","Object","assign","setAction","action","createCli","printCliHelp","printSubcommandHelp"],"sourceRoot":"../../src","sources":["index.ts"],"sourcesContent":["import { help } from \"./help.js\";\nimport { parse, safeParse } from \"./parser.js\";\n\nimport type {
|
|
1
|
+
{"version":3,"names":["help","parse","safeParse","createSubcommand","input","Object","assign","setAction","action","createCli","createOptions","options","printCliHelp","printSubcommandHelp"],"sourceRoot":"../../src","sources":["index.ts"],"sourcesContent":["import { help } from \"./help.js\";\nimport { parse, safeParse } from \"./parser.js\";\n\nimport type {\n ActionFn,\n CheckDuplicatedOptions,\n Cli,\n Option,\n Prettify,\n Subcommand,\n UnSafeParseResult,\n} from \"./types.js\";\n\nfunction createSubcommand<const T extends Subcommand>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>> {\n return Object.assign(input, {\n setAction: (action: (res: UnSafeParseResult<[T]>) => void) => (input.action = action),\n });\n}\n\nfunction createCli<const T extends Cli>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>> {\n return Object.assign(input, {\n setAction: (action: (res: UnSafeParseResult<[T]>) => void) => (input.action = action),\n });\n}\n\nfunction createOptions<const T extends [Option, ...Option[]]>(options: T): T {\n return options;\n}\n\nconst { printCliHelp, printSubcommandHelp } = help;\n\nexport { createCli, createSubcommand, createOptions, parse, printCliHelp, printSubcommandHelp, safeParse };\n\nexport type * from \"./types.js\";\n"],"mappings":"AAAA,OAASA,IAAI,KAAQ,WAAW,CAChC,OAASC,KAAK,CAAEC,SAAS,KAAQ,aAAa,CAY9C,QAAS,CAAAC,gBAAgBA,CAA6BC,KAAgC,CAA6B,CACjH,MAAO,CAAAC,MAAM,CAACC,MAAM,CAACF,KAAK,CAAE,CAC1BG,SAAS,CAAGC,MAA6C,EAAMJ,KAAK,CAACI,MAAM,CAAGA,MAChF,CAAC,CAAC,CACJ,CAEA,QAAS,CAAAC,SAASA,CAAsBL,KAAgC,CAA6B,CACnG,MAAO,CAAAC,MAAM,CAACC,MAAM,CAACF,KAAK,CAAE,CAC1BG,SAAS,CAAGC,MAA6C,EAAMJ,KAAK,CAACI,MAAM,CAAGA,MAChF,CAAC,CAAC,CACJ,CAEA,QAAS,CAAAE,aAAaA,CAAwCC,OAAU,CAAK,CAC3E,MAAO,CAAAA,OAAO,CAChB,CAEA,KAAM,CAAEC,YAAY,CAAEC,mBAAoB,CAAC,CAAGb,IAAI,CAElD,OAASS,SAAS,CAAEN,gBAAgB,CAAEO,aAAa,CAAET,KAAK,CAAEW,YAAY,CAAEC,mBAAmB,CAAEX,SAAS","ignoreList":[]}
|
package/lib/module/parser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{help}from"./help.js";import{decoupleFlags,getOrdinalPlacement,isBooleanSchema,isFlagArg,isOptionArg,noName,stringToBoolean,transformArg,transformOptionToArg}from"./utils.js";export function parse(argsv){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){params[_key-1]=arguments[_key];}const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const allSubcommands=new Set(subcommandArr.flatMap(c=>[c.name,...(c.aliases||[])]));argsv=decoupleFlags(argsv);const results={subcommand:undefined,printCliHelp(opt){help.printCliHelp(params,opt);},printSubcommandHelp(subcommandStr,opt){const subcommand=subcommandArr.find(c=>c.name===subcommandStr);if(!subcommand)return console.error(`Cannot print help for subcommand "${subcommandStr}" as it does not exist`);help.printSubcommandHelp(subcommand,opt,cliOptions.cliName);}};const addRawArg=(optionName,rawArg)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].rawArg=rawArg;};const addRawValue=(optionName,rawValue)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].rawValue=rawValue;};const addSource=(optionName,source)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].source=source;};const fillOption=(optionName,value)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});Object.assign(results._info[optionName],value);};for(let i=0;i<argsv.length;i++){const arg=argsv[i];if(i===0){results.subcommand=allSubcommands.has(arg)?arg:undefined;const subcommandProps=
|
|
1
|
+
import{help}from"./help.js";import{decoupleFlags,getOrdinalPlacement,isBooleanSchema,isFlagArg,isOptionArg,noName,stringToBoolean,transformArg,transformOptionToArg}from"./utils.js";export function parse(argsv){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){params[_key-1]=arguments[_key];}const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const allSubcommands=new Set(subcommandArr.flatMap(c=>[c.name,...(c.aliases||[])]));argsv=decoupleFlags(argsv);const results={subcommand:undefined,printCliHelp(opt){help.printCliHelp(params,opt);},printSubcommandHelp(subcommandStr,opt){const subcommand=subcommandArr.find(c=>{if(c.name===subcommandStr)return true;if(!subcommandStr)return false;if(!c.aliases?.length)return false;return c.aliases.includes(subcommandStr);});if(!subcommand)return console.error(`Cannot print help for subcommand "${subcommandStr}" as it does not exist`);help.printSubcommandHelp(subcommand,opt,cliOptions.cliName);}};const GetSubcommandProps=function(){let cmd=arguments.length>0&&arguments[0]!==undefined?arguments[0]:results.subcommand;return subcommandArr.find(c=>{if(c.name===cmd)return true;if(!cmd)return false;if(!c.aliases?.length)return false;return c.aliases.includes(cmd);});};const addRawArg=(optionName,rawArg)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].rawArg=rawArg;};const addRawValue=(optionName,rawValue)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].rawValue=rawValue;};const addSource=(optionName,source)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});results._info[optionName].source=source;};const fillOption=(optionName,value)=>{if(!results._info)results._info={};if(!results._info[optionName])results._info[optionName]=Object.create({});Object.assign(results._info[optionName],value);};for(let i=0;i<argsv.length;i++){const arg=argsv[i];if(i===0){results.subcommand=allSubcommands.has(arg)?arg:undefined;const subcommandProps=GetSubcommandProps();if(subcommandProps?.allowPositional)results.positional=[];if(subcommandProps?.arguments?.length)results.arguments=[];if(results.subcommand)continue;}const argAndValue=arg.split("=").filter(Boolean);const argWithEquals=arg.includes("=");const argument=argAndValue[0];const argValue=argAndValue[1];if(isOptionArg(argument)){if(isFlagArg(argument)&&argWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${arg}"`);}const subcommandProps=GetSubcommandProps();if(!subcommandProps)throw new Error(`Unknown subcommand: "${results.subcommand}"`);if(!subcommandProps.options){const msg=!results.subcommand?"options are not allowed here":`subcommand "${results.subcommand}" does not allow options`;throw new Error(`Error: ${msg}: "${argument}"`);}const optionName=transformArg(argument);const isNegative=argument.startsWith("--no-");const option=subcommandProps.options.find(o=>{if(o.name===optionName)return true;if(isNegative&&noName(o.name)===optionName)return true;if(!o.aliases)return false;if(o.aliases.includes(optionName))return true;if(isNegative&&o.aliases.map(noName).includes(optionName))return true;return false;});if(!option){throw new Error(`Unknown option: "${argument}"`);}if(option.name in results){throw new Error(`Duplicated option: "${argument}"`);}const isTypeBoolean=isBooleanSchema(option.type);const nextArg=argsv[i+1];let optionValue=argWithEquals?argValue:nextArg;if(isTypeBoolean){if(argWithEquals){const parsedBoolean=stringToBoolean(argValue);optionValue=isNegative?!parsedBoolean:parsedBoolean;}else{optionValue=!isNegative;}}if(typeof optionValue==="undefined"){throw new Error(`Expected a value for "${argument}" but got nothing`);}if(!argWithEquals&&isOptionArg(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArg}"`);}const res=option.type.safeParse(optionValue);if(!res.success){throw new Error(`Invalid value "${optionValue}" for "${argument}": ${res.error.errors[0].message}`);}results[option.name]=res.data;addRawArg(option.name,argument);const rawVal=argWithEquals?argValue:isTypeBoolean?"":nextArg;addRawValue(option.name,rawVal);fillOption(option.name,option);if(!argWithEquals&&!isTypeBoolean)i++;continue;}const subcommandProps=GetSubcommandProps();if(subcommandProps?.arguments?.length){if(!results.arguments)results.arguments=[];const currentArgCount=results.arguments.length;if(currentArgCount<subcommandProps.arguments.length){const argType=subcommandProps.arguments[currentArgCount].type;let argValue=arg;const isTypeBoolean=isBooleanSchema(argType);if(isTypeBoolean)argValue=stringToBoolean(argValue);const res=argType.safeParse(argValue);if(!res.success){throw new Error(`The ${getOrdinalPlacement(currentArgCount)} argument "${arg}" is invalid: ${res.error.errors[0].message}`);}results.arguments.push(res.data);continue;}}if(subcommandProps?.allowPositional){if(!results.positional)results.positional=[];results.positional.push(arg);continue;}const msg=!results.subcommand?"here":`for subcommand "${results.subcommand}"`;throw new Error(`Unexpected argument "${arg}": positional arguments are not allowed ${msg}`);}const subcommandProps=GetSubcommandProps();if(subcommandProps?.options?.length){for(const option of subcommandProps.options){if(option.name in results){addSource(option.name,"cli");fillOption(option.name,option);continue;}if(option.type.isOptional()){const hasDefault=typeof option.type._def.defaultValue==="function";if(!hasDefault)continue;results[option.name]=option.type._def.defaultValue();addSource(option.name,"default");fillOption(option.name,option);continue;}throw new Error(`Missing required option: ${transformOptionToArg(option.name)}`);}}if(subcommandProps?.arguments?.length){const currentArgCount=results.arguments?.length??0;const subcommandArgCount=subcommandProps.arguments.length;if(currentArgCount<subcommandArgCount){for(let i=currentArgCount;i<subcommandArgCount;i++){const argumentType=subcommandProps.arguments[i].type;const hasDefault=typeof argumentType._def.defaultValue==="function";if(hasDefault&&results.arguments){results.arguments.push(argumentType._def.defaultValue());continue;}if(argumentType.isOptional())continue;throw new Error(`the ${getOrdinalPlacement(i)} argument is required: "${subcommandProps.arguments[i].name}"`);}}}if(subcommandProps?.action){subcommandProps.action(results);}return results;}export function safeParse(argsv){for(var _len2=arguments.length,params=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){params[_key2-1]=arguments[_key2];}const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const printCliHelp=opt=>help.printCliHelp(params,opt);const printSubcommandHelp=(subcommandStr,opt)=>{const subcommand=subcommandArr.find(c=>c.name===subcommandStr);if(!subcommand)return console.error(`Cannot print help for subcommand "${subcommandStr}" as it does not exist`);help.printSubcommandHelp(subcommand,opt,cliOptions.cliName);};try{const data=parse(argsv,...params);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp};}catch(e){return{success:false,error:e,printCliHelp,printSubcommandHelp};}}
|
package/lib/module/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["help","decoupleFlags","getOrdinalPlacement","isBooleanSchema","isFlagArg","isOptionArg","noName","stringToBoolean","transformArg","transformOptionToArg","parse","argsv","_len","arguments","length","params","Array","_key","cliOptions","subcommandArr","allSubcommands","Set","flatMap","c","name","aliases","results","subcommand","undefined","printCliHelp","opt","printSubcommandHelp","subcommandStr","find","console","error","cliName","addRawArg","optionName","rawArg","_info","Object","create","addRawValue","rawValue","addSource","source","fillOption","value","assign","i","arg","has","subcommandProps","allowPositional","positional","argAndValue","split","filter","Boolean","argWithEquals","includes","argument","argValue","Error","options","msg","isNegative","startsWith","option","o","map","isTypeBoolean","type","nextArg","optionValue","parsedBoolean","res","safeParse","success","errors","message","data","rawVal","currentArgCount","argType","push","isOptional","hasDefault","_def","defaultValue","subcommandArgCount","argumentType","action","_len2","_key2","e"],"sourceRoot":"../../src","sources":["parser.ts"],"sourcesContent":["import { help } from \"./help.js\";\nimport {\n decoupleFlags,\n getOrdinalPlacement,\n isBooleanSchema,\n isFlagArg,\n isOptionArg,\n noName,\n stringToBoolean,\n transformArg,\n transformOptionToArg,\n} from \"./utils.js\";\n\nimport type {\n Cli,\n NoSubcommand,\n Option,\n PrintHelpOpt,\n SafeParseResult,\n Subcommand,\n UnSafeParseResult,\n} from \"./types.js\";\n\nexport function parse<T extends Subcommand[]>(argsv: string[], ...params: T): UnSafeParseResult<T>;\nexport function parse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): UnSafeParseResult<[...T, NoSubcommand & U]>;\n\nexport function parse<T extends Subcommand[], U extends Cli>(argsv: string[], ...params: [U, ...T]) {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as unknown as T;\n const allSubcommands = new Set<string>(subcommandArr.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n // decouple flags E.g. `-rf` -> `-r, -f`\n argsv = decoupleFlags(argsv);\n\n type ResultObj = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n _info?: Record<string, { rawArg?: string; rawValue?: string; source: \"cli\" | \"default\" }>;\n printCliHelp: (options?: PrintHelpOpt) => void;\n printSubcommandHelp: (subcommand: any, options?: PrintHelpOpt) => void;\n };\n\n const results: ResultObj = {\n subcommand: undefined,\n printCliHelp(opt) {\n help.printCliHelp(params, opt);\n },\n printSubcommandHelp(subcommandStr, opt) {\n const subcommand = subcommandArr.find(c => c.name === subcommandStr);\n if (!subcommand) return console.error(`Cannot print help for subcommand \"${subcommandStr}\" as it does not exist`);\n help.printSubcommandHelp(subcommand, opt, cliOptions.cliName);\n },\n };\n\n const addRawArg = (optionName: string, rawArg: string) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].rawArg = rawArg;\n };\n\n const addRawValue = (optionName: string, rawValue: string) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].rawValue = rawValue;\n };\n\n const addSource = (optionName: string, source: \"cli\" | \"default\") => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].source = source;\n };\n\n const fillOption = (optionName: string, value: Option) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n Object.assign(results._info[optionName], value);\n };\n\n for (let i = 0; i < argsv.length; i++) {\n const arg = argsv[i];\n\n // * subcommand\n if (i === 0) {\n results.subcommand = allSubcommands.has(arg) ? arg : undefined;\n\n // add positional and arguments array\n const subcommandProps = subcommandArr.find(c => c.name === results.subcommand);\n if (subcommandProps?.allowPositional) results.positional = [];\n if (subcommandProps?.arguments?.length) results.arguments = [];\n\n if (results.subcommand) continue;\n }\n\n // * option\n const argAndValue = arg.split(\"=\").filter(Boolean);\n const argWithEquals = arg.includes(\"=\");\n const argument = argAndValue[0];\n const argValue: string | undefined = argAndValue[1];\n\n if (isOptionArg(argument)) {\n if (isFlagArg(argument) && argWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${arg}\"`);\n }\n\n const subcommandProps = subcommandArr.find(c => c.name === results.subcommand);\n if (!subcommandProps) throw new Error(`Unknown subcommand: \"${results.subcommand}\"`);\n\n if (!subcommandProps.options) {\n const msg = !results.subcommand\n ? \"options are not allowed here\"\n : `subcommand \"${results.subcommand}\" does not allow options`;\n throw new Error(`Error: ${msg}: \"${argument}\"`);\n }\n\n const optionName = transformArg(argument);\n if (optionName in results) throw new Error(`Duplicate option: \"${argument}\"`);\n\n const isNegative = argument.startsWith(\"--no-\");\n\n const option = subcommandProps.options.find(o => {\n if (o.name === optionName) return true;\n if (isNegative && noName(o.name) === optionName) return true;\n\n if (!o.aliases) return false;\n if (o.aliases.includes(optionName)) return true;\n if (isNegative && o.aliases.map(noName).includes(optionName)) return true;\n\n return false;\n });\n\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`);\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArg = argsv[i + 1];\n\n let optionValue: string | boolean = argWithEquals ? argValue : nextArg;\n\n if (isTypeBoolean) {\n if (argWithEquals) {\n const parsedBoolean = stringToBoolean(argValue);\n optionValue = isNegative ? !parsedBoolean : parsedBoolean;\n } else {\n optionValue = !isNegative;\n }\n }\n\n if (typeof optionValue === \"undefined\") {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`);\n }\n\n if (!argWithEquals && isOptionArg(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArg}\"`);\n }\n\n const res = option.type.safeParse(optionValue);\n if (!res.success) {\n throw new Error(`Invalid value \"${optionValue}\" for \"${argument}\": ${res.error.errors[0].message}`);\n }\n\n results[option.name] = res.data;\n addRawArg(option.name, argument);\n const rawVal = argWithEquals ? argValue : isTypeBoolean ? \"\" : nextArg;\n addRawValue(option.name, rawVal);\n fillOption(option.name, option);\n\n if (!argWithEquals && !isTypeBoolean) i++;\n continue;\n }\n\n const subcommandProps = subcommandArr.find(c => c.name === results.subcommand);\n\n // * arguments\n if (subcommandProps?.arguments?.length) {\n if (!results.arguments) results.arguments = [];\n\n const currentArgCount = results.arguments.length;\n\n if (currentArgCount < subcommandProps.arguments.length) {\n const argType = subcommandProps.arguments[currentArgCount].type;\n\n let argValue: string | boolean = arg;\n const isTypeBoolean = isBooleanSchema(argType);\n if (isTypeBoolean) argValue = stringToBoolean(argValue);\n\n const res = argType.safeParse(argValue);\n if (!res.success) {\n throw new Error(\n `The ${getOrdinalPlacement(currentArgCount)} argument \"${arg}\" is invalid: ${res.error.errors[0].message}`,\n );\n }\n\n results.arguments.push(res.data);\n continue;\n }\n }\n\n // * positional\n if (subcommandProps?.allowPositional) {\n if (!results.positional) results.positional = [];\n results.positional.push(arg);\n continue;\n }\n\n const msg = !results.subcommand ? \"here\" : `for subcommand \"${results.subcommand}\"`;\n throw new Error(`Unexpected argument \"${arg}\": positional arguments are not allowed ${msg}`);\n }\n\n // check for missing options - set defaults - add _source\n const subcommandProps = subcommandArr.find(c => c.name === results.subcommand);\n if (subcommandProps?.options?.length) {\n for (const option of subcommandProps.options) {\n if (option.name in results) {\n addSource(option.name, \"cli\");\n fillOption(option.name, option);\n continue;\n }\n\n if (option.type.isOptional()) {\n const hasDefault = typeof option.type._def.defaultValue === \"function\";\n if (!hasDefault) continue;\n results[option.name] = option.type._def.defaultValue();\n addSource(option.name, \"default\");\n fillOption(option.name, option);\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArg(option.name)}`);\n }\n }\n\n // check for arguments - set defaults\n if (subcommandProps?.arguments?.length) {\n const currentArgCount = results.arguments?.length ?? 0;\n const subcommandArgCount = subcommandProps.arguments.length;\n\n // missing arguments\n if (currentArgCount < subcommandArgCount) {\n for (let i = currentArgCount; i < subcommandArgCount; i++) {\n const argumentType = subcommandProps.arguments[i].type;\n const hasDefault = typeof argumentType._def.defaultValue === \"function\";\n if (hasDefault && results.arguments) {\n results.arguments.push(argumentType._def.defaultValue());\n continue;\n }\n\n if (argumentType.isOptional()) continue;\n\n throw new Error(`the ${getOrdinalPlacement(i)} argument is required: \"${subcommandProps.arguments[i].name}\"`);\n }\n }\n }\n\n if (subcommandProps?.action) {\n subcommandProps.action(results);\n }\n\n return results as UnSafeParseResult<[...T, NoSubcommand & U]>;\n}\n\nexport function safeParse<T extends Subcommand[]>(argsv: string[], ...params: T): SafeParseResult<T>;\nexport function safeParse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): SafeParseResult<[...T, NoSubcommand & U]>;\n\nexport function safeParse<T extends Subcommand[], U extends Cli>(argsv: string[], ...params: [U, ...T]) {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as Subcommand[];\n\n const printCliHelp = (opt?: PrintHelpOpt) => help.printCliHelp(params, opt);\n const printSubcommandHelp = (subcommandStr: NonNullable<T[number][\"name\"]>, opt?: PrintHelpOpt) => {\n const subcommand = subcommandArr.find(c => c.name === subcommandStr);\n if (!subcommand) return console.error(`Cannot print help for subcommand \"${subcommandStr}\" as it does not exist`);\n help.printSubcommandHelp(subcommand, opt, cliOptions.cliName);\n };\n\n try {\n const data = parse(argsv, ...params);\n // @ts-expect-error error\n delete data.printCliHelp;\n // @ts-expect-error error\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n };\n } catch (e) {\n return { success: false, error: e as Error, printCliHelp, printSubcommandHelp };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["help","decoupleFlags","getOrdinalPlacement","isBooleanSchema","isFlagArg","isOptionArg","noName","stringToBoolean","transformArg","transformOptionToArg","parse","argsv","_len","arguments","length","params","Array","_key","cliOptions","subcommandArr","allSubcommands","Set","flatMap","c","name","aliases","results","subcommand","undefined","printCliHelp","opt","printSubcommandHelp","subcommandStr","find","includes","console","error","cliName","GetSubcommandProps","cmd","addRawArg","optionName","rawArg","_info","Object","create","addRawValue","rawValue","addSource","source","fillOption","value","assign","i","arg","has","subcommandProps","allowPositional","positional","argAndValue","split","filter","Boolean","argWithEquals","argument","argValue","Error","options","msg","isNegative","startsWith","option","o","map","isTypeBoolean","type","nextArg","optionValue","parsedBoolean","res","safeParse","success","errors","message","data","rawVal","currentArgCount","argType","push","isOptional","hasDefault","_def","defaultValue","subcommandArgCount","argumentType","action","_len2","_key2","e"],"sourceRoot":"../../src","sources":["parser.ts"],"sourcesContent":["import { help } from \"./help.js\";\nimport {\n decoupleFlags,\n getOrdinalPlacement,\n isBooleanSchema,\n isFlagArg,\n isOptionArg,\n noName,\n stringToBoolean,\n transformArg,\n transformOptionToArg,\n} from \"./utils.js\";\n\nimport type {\n Cli,\n NoSubcommand,\n Option,\n PrintHelpOpt,\n SafeParseResult,\n Subcommand,\n UnSafeParseResult,\n} from \"./types.js\";\n\nexport function parse<T extends Subcommand[]>(argsv: string[], ...params: T): UnSafeParseResult<T>;\nexport function parse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): UnSafeParseResult<[...T, NoSubcommand & U]>;\n\nexport function parse<T extends Subcommand[], U extends Cli>(argsv: string[], ...params: [U, ...T]) {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as unknown as T;\n const allSubcommands = new Set<string>(subcommandArr.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n // decouple flags E.g. `-rf` -> `-r, -f`\n argsv = decoupleFlags(argsv);\n\n type ResultObj = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n _info?: Record<string, { rawArg?: string; rawValue?: string; source: \"cli\" | \"default\" }>;\n printCliHelp: (options?: PrintHelpOpt) => void;\n printSubcommandHelp: (subcommand: any, options?: PrintHelpOpt) => void;\n };\n\n const results: ResultObj = {\n subcommand: undefined,\n printCliHelp(opt) {\n help.printCliHelp(params, opt);\n },\n printSubcommandHelp(subcommandStr, opt) {\n const subcommand = subcommandArr.find(c => {\n if (c.name === subcommandStr) return true;\n if (!subcommandStr) return false;\n if (!c.aliases?.length) return false;\n return c.aliases.includes(subcommandStr);\n });\n if (!subcommand) return console.error(`Cannot print help for subcommand \"${subcommandStr}\" as it does not exist`);\n help.printSubcommandHelp(subcommand, opt, cliOptions.cliName);\n },\n };\n\n /** - Get current subcommand props */\n const GetSubcommandProps = (cmd = results.subcommand) => {\n return subcommandArr.find(c => {\n if (c.name === cmd) return true;\n if (!cmd) return false;\n if (!c.aliases?.length) return false;\n return c.aliases.includes(cmd);\n });\n };\n\n const addRawArg = (optionName: string, rawArg: string) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].rawArg = rawArg;\n };\n\n const addRawValue = (optionName: string, rawValue: string) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].rawValue = rawValue;\n };\n\n const addSource = (optionName: string, source: \"cli\" | \"default\") => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n results._info[optionName].source = source;\n };\n\n const fillOption = (optionName: string, value: Option) => {\n if (!results._info) results._info = {};\n if (!results._info[optionName]) results._info[optionName] = Object.create({});\n Object.assign(results._info[optionName], value);\n };\n\n for (let i = 0; i < argsv.length; i++) {\n const arg = argsv[i];\n\n // * subcommand\n if (i === 0) {\n results.subcommand = allSubcommands.has(arg) ? arg : undefined;\n\n // add positional and arguments array\n const subcommandProps = GetSubcommandProps();\n if (subcommandProps?.allowPositional) results.positional = [];\n if (subcommandProps?.arguments?.length) results.arguments = [];\n\n if (results.subcommand) continue;\n }\n\n // * option\n const argAndValue = arg.split(\"=\").filter(Boolean);\n const argWithEquals = arg.includes(\"=\");\n const argument = argAndValue[0];\n const argValue: string | undefined = argAndValue[1];\n\n if (isOptionArg(argument)) {\n if (isFlagArg(argument) && argWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${arg}\"`);\n }\n\n const subcommandProps = GetSubcommandProps();\n if (!subcommandProps) throw new Error(`Unknown subcommand: \"${results.subcommand}\"`);\n\n if (!subcommandProps.options) {\n const msg = !results.subcommand\n ? \"options are not allowed here\"\n : `subcommand \"${results.subcommand}\" does not allow options`;\n throw new Error(`Error: ${msg}: \"${argument}\"`);\n }\n\n const optionName = transformArg(argument);\n const isNegative = argument.startsWith(\"--no-\");\n\n const option = subcommandProps.options.find(o => {\n if (o.name === optionName) return true;\n if (isNegative && noName(o.name) === optionName) return true;\n\n if (!o.aliases) return false;\n if (o.aliases.includes(optionName)) return true;\n if (isNegative && o.aliases.map(noName).includes(optionName)) return true;\n\n return false;\n });\n\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`);\n }\n\n if (option.name in results) {\n throw new Error(`Duplicated option: \"${argument}\"`);\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArg = argsv[i + 1];\n\n let optionValue: string | boolean = argWithEquals ? argValue : nextArg;\n\n if (isTypeBoolean) {\n if (argWithEquals) {\n const parsedBoolean = stringToBoolean(argValue);\n optionValue = isNegative ? !parsedBoolean : parsedBoolean;\n } else {\n optionValue = !isNegative;\n }\n }\n\n if (typeof optionValue === \"undefined\") {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`);\n }\n\n if (!argWithEquals && isOptionArg(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArg}\"`);\n }\n\n const res = option.type.safeParse(optionValue);\n if (!res.success) {\n throw new Error(`Invalid value \"${optionValue}\" for \"${argument}\": ${res.error.errors[0].message}`);\n }\n\n results[option.name] = res.data;\n addRawArg(option.name, argument);\n const rawVal = argWithEquals ? argValue : isTypeBoolean ? \"\" : nextArg;\n addRawValue(option.name, rawVal);\n fillOption(option.name, option);\n\n if (!argWithEquals && !isTypeBoolean) i++;\n continue;\n }\n\n const subcommandProps = GetSubcommandProps();\n\n // * arguments\n if (subcommandProps?.arguments?.length) {\n if (!results.arguments) results.arguments = [];\n\n const currentArgCount = results.arguments.length;\n\n if (currentArgCount < subcommandProps.arguments.length) {\n const argType = subcommandProps.arguments[currentArgCount].type;\n\n let argValue: string | boolean = arg;\n const isTypeBoolean = isBooleanSchema(argType);\n if (isTypeBoolean) argValue = stringToBoolean(argValue);\n\n const res = argType.safeParse(argValue);\n if (!res.success) {\n throw new Error(\n `The ${getOrdinalPlacement(currentArgCount)} argument \"${arg}\" is invalid: ${res.error.errors[0].message}`,\n );\n }\n\n results.arguments.push(res.data);\n continue;\n }\n }\n\n // * positional\n if (subcommandProps?.allowPositional) {\n if (!results.positional) results.positional = [];\n results.positional.push(arg);\n continue;\n }\n\n const msg = !results.subcommand ? \"here\" : `for subcommand \"${results.subcommand}\"`;\n throw new Error(`Unexpected argument \"${arg}\": positional arguments are not allowed ${msg}`);\n }\n\n // check for missing options - set defaults - add _source\n const subcommandProps = GetSubcommandProps();\n if (subcommandProps?.options?.length) {\n for (const option of subcommandProps.options) {\n if (option.name in results) {\n addSource(option.name, \"cli\");\n fillOption(option.name, option);\n continue;\n }\n\n if (option.type.isOptional()) {\n const hasDefault = typeof option.type._def.defaultValue === \"function\";\n if (!hasDefault) continue;\n results[option.name] = option.type._def.defaultValue();\n addSource(option.name, \"default\");\n fillOption(option.name, option);\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArg(option.name)}`);\n }\n }\n\n // check for arguments - set defaults\n if (subcommandProps?.arguments?.length) {\n const currentArgCount = results.arguments?.length ?? 0;\n const subcommandArgCount = subcommandProps.arguments.length;\n\n // missing arguments\n if (currentArgCount < subcommandArgCount) {\n for (let i = currentArgCount; i < subcommandArgCount; i++) {\n const argumentType = subcommandProps.arguments[i].type;\n const hasDefault = typeof argumentType._def.defaultValue === \"function\";\n if (hasDefault && results.arguments) {\n results.arguments.push(argumentType._def.defaultValue());\n continue;\n }\n\n if (argumentType.isOptional()) continue;\n\n throw new Error(`the ${getOrdinalPlacement(i)} argument is required: \"${subcommandProps.arguments[i].name}\"`);\n }\n }\n }\n\n if (subcommandProps?.action) {\n subcommandProps.action(results);\n }\n\n return results as UnSafeParseResult<[...T, NoSubcommand & U]>;\n}\n\nexport function safeParse<T extends Subcommand[]>(argsv: string[], ...params: T): SafeParseResult<T>;\nexport function safeParse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): SafeParseResult<[...T, NoSubcommand & U]>;\n\nexport function safeParse<T extends Subcommand[], U extends Cli>(argsv: string[], ...params: [U, ...T]) {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as Subcommand[];\n\n const printCliHelp = (opt?: PrintHelpOpt) => help.printCliHelp(params, opt);\n const printSubcommandHelp = (subcommandStr: NonNullable<T[number][\"name\"]>, opt?: PrintHelpOpt) => {\n const subcommand = subcommandArr.find(c => c.name === subcommandStr);\n if (!subcommand) return console.error(`Cannot print help for subcommand \"${subcommandStr}\" as it does not exist`);\n help.printSubcommandHelp(subcommand, opt, cliOptions.cliName);\n };\n\n try {\n const data = parse(argsv, ...params);\n // @ts-expect-error error\n delete data.printCliHelp;\n // @ts-expect-error error\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n };\n } catch (e) {\n return { success: false, error: e as Error, printCliHelp, printSubcommandHelp };\n }\n}\n"],"mappings":"AAAA,OAASA,IAAI,KAAQ,WAAW,CAChC,OACEC,aAAa,CACbC,mBAAmB,CACnBC,eAAe,CACfC,SAAS,CACTC,WAAW,CACXC,MAAM,CACNC,eAAe,CACfC,YAAY,CACZC,oBAAoB,KACf,YAAY,CAkBnB,MAAO,SAAS,CAAAC,KAAKA,CAAwCC,KAAe,CAAwB,SAAAC,IAAA,CAAAC,SAAA,CAAAC,MAAA,CAAnBC,MAAM,KAAAC,KAAA,CAAAJ,IAAA,GAAAA,IAAA,MAAAK,IAAA,GAAAA,IAAA,CAAAL,IAAA,CAAAK,IAAA,IAANF,MAAM,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GACrF,KAAM,CAAAC,UAAU,CAAI,SAAS,EAAI,CAAAH,MAAM,CAAC,CAAC,CAAC,CAAGA,MAAM,CAAC,CAAC,CAAC,CAAG,CAAC,CAAO,CACjE,KAAM,CAAAI,aAAa,CAAGJ,MAAsB,CAC5C,KAAM,CAAAK,cAAc,CAAG,GAAI,CAAAC,GAAG,CAASF,aAAa,CAACG,OAAO,CAACC,CAAC,EAAI,CAACA,CAAC,CAACC,IAAI,CAAE,IAAID,CAAC,CAACE,OAAO,EAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAGlGd,KAAK,CAAGV,aAAa,CAACU,KAAK,CAAC,CAW5B,KAAM,CAAAe,OAAkB,CAAG,CACzBC,UAAU,CAAEC,SAAS,CACrBC,YAAYA,CAACC,GAAG,CAAE,CAChB9B,IAAI,CAAC6B,YAAY,CAACd,MAAM,CAAEe,GAAG,CAAC,CAChC,CAAC,CACDC,mBAAmBA,CAACC,aAAa,CAAEF,GAAG,CAAE,CACtC,KAAM,CAAAH,UAAU,CAAGR,aAAa,CAACc,IAAI,CAACV,CAAC,EAAI,CACzC,GAAIA,CAAC,CAACC,IAAI,GAAKQ,aAAa,CAAE,MAAO,KAAI,CACzC,GAAI,CAACA,aAAa,CAAE,MAAO,MAAK,CAChC,GAAI,CAACT,CAAC,CAACE,OAAO,EAAEX,MAAM,CAAE,MAAO,MAAK,CACpC,MAAO,CAAAS,CAAC,CAACE,OAAO,CAACS,QAAQ,CAACF,aAAa,CAAC,CAC1C,CAAC,CAAC,CACF,GAAI,CAACL,UAAU,CAAE,MAAO,CAAAQ,OAAO,CAACC,KAAK,CAAC,qCAAqCJ,aAAa,wBAAwB,CAAC,CACjHhC,IAAI,CAAC+B,mBAAmB,CAACJ,UAAU,CAAEG,GAAG,CAAEZ,UAAU,CAACmB,OAAO,CAAC,CAC/D,CACF,CAAC,CAGD,KAAM,CAAAC,kBAAkB,CAAG,QAAAA,CAAA,CAA8B,IAA7B,CAAAC,GAAG,CAAA1B,SAAA,CAAAC,MAAA,IAAAD,SAAA,MAAAe,SAAA,CAAAf,SAAA,IAAGa,OAAO,CAACC,UAAU,CAClD,MAAO,CAAAR,aAAa,CAACc,IAAI,CAACV,CAAC,EAAI,CAC7B,GAAIA,CAAC,CAACC,IAAI,GAAKe,GAAG,CAAE,MAAO,KAAI,CAC/B,GAAI,CAACA,GAAG,CAAE,MAAO,MAAK,CACtB,GAAI,CAAChB,CAAC,CAACE,OAAO,EAAEX,MAAM,CAAE,MAAO,MAAK,CACpC,MAAO,CAAAS,CAAC,CAACE,OAAO,CAACS,QAAQ,CAACK,GAAG,CAAC,CAChC,CAAC,CAAC,CACJ,CAAC,CAED,KAAM,CAAAC,SAAS,CAAGA,CAACC,UAAkB,CAAEC,MAAc,GAAK,CACxD,GAAI,CAAChB,OAAO,CAACiB,KAAK,CAAEjB,OAAO,CAACiB,KAAK,CAAG,CAAC,CAAC,CACtC,GAAI,CAACjB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAEf,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7EnB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAACC,MAAM,CAAGA,MAAM,CAC3C,CAAC,CAED,KAAM,CAAAI,WAAW,CAAGA,CAACL,UAAkB,CAAEM,QAAgB,GAAK,CAC5D,GAAI,CAACrB,OAAO,CAACiB,KAAK,CAAEjB,OAAO,CAACiB,KAAK,CAAG,CAAC,CAAC,CACtC,GAAI,CAACjB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAEf,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7EnB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAACM,QAAQ,CAAGA,QAAQ,CAC/C,CAAC,CAED,KAAM,CAAAC,SAAS,CAAGA,CAACP,UAAkB,CAAEQ,MAAyB,GAAK,CACnE,GAAI,CAACvB,OAAO,CAACiB,KAAK,CAAEjB,OAAO,CAACiB,KAAK,CAAG,CAAC,CAAC,CACtC,GAAI,CAACjB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAEf,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7EnB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAACQ,MAAM,CAAGA,MAAM,CAC3C,CAAC,CAED,KAAM,CAAAC,UAAU,CAAGA,CAACT,UAAkB,CAAEU,KAAa,GAAK,CACxD,GAAI,CAACzB,OAAO,CAACiB,KAAK,CAAEjB,OAAO,CAACiB,KAAK,CAAG,CAAC,CAAC,CACtC,GAAI,CAACjB,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAEf,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7ED,MAAM,CAACQ,MAAM,CAAC1B,OAAO,CAACiB,KAAK,CAACF,UAAU,CAAC,CAAEU,KAAK,CAAC,CACjD,CAAC,CAED,IAAK,GAAI,CAAAE,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAG1C,KAAK,CAACG,MAAM,CAAEuC,CAAC,EAAE,CAAE,CACrC,KAAM,CAAAC,GAAG,CAAG3C,KAAK,CAAC0C,CAAC,CAAC,CAGpB,GAAIA,CAAC,GAAK,CAAC,CAAE,CACX3B,OAAO,CAACC,UAAU,CAAGP,cAAc,CAACmC,GAAG,CAACD,GAAG,CAAC,CAAGA,GAAG,CAAG1B,SAAS,CAG9D,KAAM,CAAA4B,eAAe,CAAGlB,kBAAkB,CAAC,CAAC,CAC5C,GAAIkB,eAAe,EAAEC,eAAe,CAAE/B,OAAO,CAACgC,UAAU,CAAG,EAAE,CAC7D,GAAIF,eAAe,EAAE3C,SAAS,EAAEC,MAAM,CAAEY,OAAO,CAACb,SAAS,CAAG,EAAE,CAE9D,GAAIa,OAAO,CAACC,UAAU,CAAE,SAC1B,CAGA,KAAM,CAAAgC,WAAW,CAAGL,GAAG,CAACM,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAClD,KAAM,CAAAC,aAAa,CAAGT,GAAG,CAACpB,QAAQ,CAAC,GAAG,CAAC,CACvC,KAAM,CAAA8B,QAAQ,CAAGL,WAAW,CAAC,CAAC,CAAC,CAC/B,KAAM,CAAAM,QAA4B,CAAGN,WAAW,CAAC,CAAC,CAAC,CAEnD,GAAItD,WAAW,CAAC2D,QAAQ,CAAC,CAAE,CACzB,GAAI5D,SAAS,CAAC4D,QAAQ,CAAC,EAAID,aAAa,CAAE,CACxC,KAAM,IAAI,CAAAG,KAAK,CAAC,iDAAiDZ,GAAG,GAAG,CAAC,CAC1E,CAEA,KAAM,CAAAE,eAAe,CAAGlB,kBAAkB,CAAC,CAAC,CAC5C,GAAI,CAACkB,eAAe,CAAE,KAAM,IAAI,CAAAU,KAAK,CAAC,wBAAwBxC,OAAO,CAACC,UAAU,GAAG,CAAC,CAEpF,GAAI,CAAC6B,eAAe,CAACW,OAAO,CAAE,CAC5B,KAAM,CAAAC,GAAG,CAAG,CAAC1C,OAAO,CAACC,UAAU,CAC3B,8BAA8B,CAC9B,eAAeD,OAAO,CAACC,UAAU,0BAA0B,CAC/D,KAAM,IAAI,CAAAuC,KAAK,CAAC,UAAUE,GAAG,MAAMJ,QAAQ,GAAG,CAAC,CACjD,CAEA,KAAM,CAAAvB,UAAU,CAAGjC,YAAY,CAACwD,QAAQ,CAAC,CACzC,KAAM,CAAAK,UAAU,CAAGL,QAAQ,CAACM,UAAU,CAAC,OAAO,CAAC,CAE/C,KAAM,CAAAC,MAAM,CAAGf,eAAe,CAACW,OAAO,CAAClC,IAAI,CAACuC,CAAC,EAAI,CAC/C,GAAIA,CAAC,CAAChD,IAAI,GAAKiB,UAAU,CAAE,MAAO,KAAI,CACtC,GAAI4B,UAAU,EAAI/D,MAAM,CAACkE,CAAC,CAAChD,IAAI,CAAC,GAAKiB,UAAU,CAAE,MAAO,KAAI,CAE5D,GAAI,CAAC+B,CAAC,CAAC/C,OAAO,CAAE,MAAO,MAAK,CAC5B,GAAI+C,CAAC,CAAC/C,OAAO,CAACS,QAAQ,CAACO,UAAU,CAAC,CAAE,MAAO,KAAI,CAC/C,GAAI4B,UAAU,EAAIG,CAAC,CAAC/C,OAAO,CAACgD,GAAG,CAACnE,MAAM,CAAC,CAAC4B,QAAQ,CAACO,UAAU,CAAC,CAAE,MAAO,KAAI,CAEzE,MAAO,MAAK,CACd,CAAC,CAAC,CAEF,GAAI,CAAC8B,MAAM,CAAE,CACX,KAAM,IAAI,CAAAL,KAAK,CAAC,oBAAoBF,QAAQ,GAAG,CAAC,CAClD,CAEA,GAAIO,MAAM,CAAC/C,IAAI,GAAI,CAAAE,OAAO,CAAE,CAC1B,KAAM,IAAI,CAAAwC,KAAK,CAAC,uBAAuBF,QAAQ,GAAG,CAAC,CACrD,CAEA,KAAM,CAAAU,aAAa,CAAGvE,eAAe,CAACoE,MAAM,CAACI,IAAI,CAAC,CAClD,KAAM,CAAAC,OAAO,CAAGjE,KAAK,CAAC0C,CAAC,CAAG,CAAC,CAAC,CAE5B,GAAI,CAAAwB,WAA6B,CAAGd,aAAa,CAAGE,QAAQ,CAAGW,OAAO,CAEtE,GAAIF,aAAa,CAAE,CACjB,GAAIX,aAAa,CAAE,CACjB,KAAM,CAAAe,aAAa,CAAGvE,eAAe,CAAC0D,QAAQ,CAAC,CAC/CY,WAAW,CAAGR,UAAU,CAAG,CAACS,aAAa,CAAGA,aAAa,CAC3D,CAAC,IAAM,CACLD,WAAW,CAAG,CAACR,UAAU,CAC3B,CACF,CAEA,GAAI,MAAO,CAAAQ,WAAW,GAAK,WAAW,CAAE,CACtC,KAAM,IAAI,CAAAX,KAAK,CAAC,yBAAyBF,QAAQ,mBAAmB,CAAC,CACvE,CAEA,GAAI,CAACD,aAAa,EAAI1D,WAAW,CAACwE,WAAW,CAAC,CAAE,CAC9C,KAAM,IAAI,CAAAX,KAAK,CAAC,yBAAyBF,QAAQ,0BAA0BY,OAAO,GAAG,CAAC,CACxF,CAEA,KAAM,CAAAG,GAAG,CAAGR,MAAM,CAACI,IAAI,CAACK,SAAS,CAACH,WAAW,CAAC,CAC9C,GAAI,CAACE,GAAG,CAACE,OAAO,CAAE,CAChB,KAAM,IAAI,CAAAf,KAAK,CAAC,kBAAkBW,WAAW,UAAUb,QAAQ,MAAMe,GAAG,CAAC3C,KAAK,CAAC8C,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO,EAAE,CAAC,CACrG,CAEAzD,OAAO,CAAC6C,MAAM,CAAC/C,IAAI,CAAC,CAAGuD,GAAG,CAACK,IAAI,CAC/B5C,SAAS,CAAC+B,MAAM,CAAC/C,IAAI,CAAEwC,QAAQ,CAAC,CAChC,KAAM,CAAAqB,MAAM,CAAGtB,aAAa,CAAGE,QAAQ,CAAGS,aAAa,CAAG,EAAE,CAAGE,OAAO,CACtE9B,WAAW,CAACyB,MAAM,CAAC/C,IAAI,CAAE6D,MAAM,CAAC,CAChCnC,UAAU,CAACqB,MAAM,CAAC/C,IAAI,CAAE+C,MAAM,CAAC,CAE/B,GAAI,CAACR,aAAa,EAAI,CAACW,aAAa,CAAErB,CAAC,EAAE,CACzC,SACF,CAEA,KAAM,CAAAG,eAAe,CAAGlB,kBAAkB,CAAC,CAAC,CAG5C,GAAIkB,eAAe,EAAE3C,SAAS,EAAEC,MAAM,CAAE,CACtC,GAAI,CAACY,OAAO,CAACb,SAAS,CAAEa,OAAO,CAACb,SAAS,CAAG,EAAE,CAE9C,KAAM,CAAAyE,eAAe,CAAG5D,OAAO,CAACb,SAAS,CAACC,MAAM,CAEhD,GAAIwE,eAAe,CAAG9B,eAAe,CAAC3C,SAAS,CAACC,MAAM,CAAE,CACtD,KAAM,CAAAyE,OAAO,CAAG/B,eAAe,CAAC3C,SAAS,CAACyE,eAAe,CAAC,CAACX,IAAI,CAE/D,GAAI,CAAAV,QAA0B,CAAGX,GAAG,CACpC,KAAM,CAAAoB,aAAa,CAAGvE,eAAe,CAACoF,OAAO,CAAC,CAC9C,GAAIb,aAAa,CAAET,QAAQ,CAAG1D,eAAe,CAAC0D,QAAQ,CAAC,CAEvD,KAAM,CAAAc,GAAG,CAAGQ,OAAO,CAACP,SAAS,CAACf,QAAQ,CAAC,CACvC,GAAI,CAACc,GAAG,CAACE,OAAO,CAAE,CAChB,KAAM,IAAI,CAAAf,KAAK,CACb,OAAOhE,mBAAmB,CAACoF,eAAe,CAAC,cAAchC,GAAG,iBAAiByB,GAAG,CAAC3C,KAAK,CAAC8C,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO,EAC1G,CAAC,CACH,CAEAzD,OAAO,CAACb,SAAS,CAAC2E,IAAI,CAACT,GAAG,CAACK,IAAI,CAAC,CAChC,SACF,CACF,CAGA,GAAI5B,eAAe,EAAEC,eAAe,CAAE,CACpC,GAAI,CAAC/B,OAAO,CAACgC,UAAU,CAAEhC,OAAO,CAACgC,UAAU,CAAG,EAAE,CAChDhC,OAAO,CAACgC,UAAU,CAAC8B,IAAI,CAAClC,GAAG,CAAC,CAC5B,SACF,CAEA,KAAM,CAAAc,GAAG,CAAG,CAAC1C,OAAO,CAACC,UAAU,CAAG,MAAM,CAAG,mBAAmBD,OAAO,CAACC,UAAU,GAAG,CACnF,KAAM,IAAI,CAAAuC,KAAK,CAAC,wBAAwBZ,GAAG,2CAA2Cc,GAAG,EAAE,CAAC,CAC9F,CAGA,KAAM,CAAAZ,eAAe,CAAGlB,kBAAkB,CAAC,CAAC,CAC5C,GAAIkB,eAAe,EAAEW,OAAO,EAAErD,MAAM,CAAE,CACpC,IAAK,KAAM,CAAAyD,MAAM,GAAI,CAAAf,eAAe,CAACW,OAAO,CAAE,CAC5C,GAAII,MAAM,CAAC/C,IAAI,GAAI,CAAAE,OAAO,CAAE,CAC1BsB,SAAS,CAACuB,MAAM,CAAC/C,IAAI,CAAE,KAAK,CAAC,CAC7B0B,UAAU,CAACqB,MAAM,CAAC/C,IAAI,CAAE+C,MAAM,CAAC,CAC/B,SACF,CAEA,GAAIA,MAAM,CAACI,IAAI,CAACc,UAAU,CAAC,CAAC,CAAE,CAC5B,KAAM,CAAAC,UAAU,CAAG,MAAO,CAAAnB,MAAM,CAACI,IAAI,CAACgB,IAAI,CAACC,YAAY,GAAK,UAAU,CACtE,GAAI,CAACF,UAAU,CAAE,SACjBhE,OAAO,CAAC6C,MAAM,CAAC/C,IAAI,CAAC,CAAG+C,MAAM,CAACI,IAAI,CAACgB,IAAI,CAACC,YAAY,CAAC,CAAC,CACtD5C,SAAS,CAACuB,MAAM,CAAC/C,IAAI,CAAE,SAAS,CAAC,CACjC0B,UAAU,CAACqB,MAAM,CAAC/C,IAAI,CAAE+C,MAAM,CAAC,CAC/B,SACF,CAEA,KAAM,IAAI,CAAAL,KAAK,CAAC,4BAA4BzD,oBAAoB,CAAC8D,MAAM,CAAC/C,IAAI,CAAC,EAAE,CAAC,CAClF,CACF,CAGA,GAAIgC,eAAe,EAAE3C,SAAS,EAAEC,MAAM,CAAE,CACtC,KAAM,CAAAwE,eAAe,CAAG5D,OAAO,CAACb,SAAS,EAAEC,MAAM,EAAI,CAAC,CACtD,KAAM,CAAA+E,kBAAkB,CAAGrC,eAAe,CAAC3C,SAAS,CAACC,MAAM,CAG3D,GAAIwE,eAAe,CAAGO,kBAAkB,CAAE,CACxC,IAAK,GAAI,CAAAxC,CAAC,CAAGiC,eAAe,CAAEjC,CAAC,CAAGwC,kBAAkB,CAAExC,CAAC,EAAE,CAAE,CACzD,KAAM,CAAAyC,YAAY,CAAGtC,eAAe,CAAC3C,SAAS,CAACwC,CAAC,CAAC,CAACsB,IAAI,CACtD,KAAM,CAAAe,UAAU,CAAG,MAAO,CAAAI,YAAY,CAACH,IAAI,CAACC,YAAY,GAAK,UAAU,CACvE,GAAIF,UAAU,EAAIhE,OAAO,CAACb,SAAS,CAAE,CACnCa,OAAO,CAACb,SAAS,CAAC2E,IAAI,CAACM,YAAY,CAACH,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CACxD,SACF,CAEA,GAAIE,YAAY,CAACL,UAAU,CAAC,CAAC,CAAE,SAE/B,KAAM,IAAI,CAAAvB,KAAK,CAAC,OAAOhE,mBAAmB,CAACmD,CAAC,CAAC,2BAA2BG,eAAe,CAAC3C,SAAS,CAACwC,CAAC,CAAC,CAAC7B,IAAI,GAAG,CAAC,CAC/G,CACF,CACF,CAEA,GAAIgC,eAAe,EAAEuC,MAAM,CAAE,CAC3BvC,eAAe,CAACuC,MAAM,CAACrE,OAAO,CAAC,CACjC,CAEA,MAAO,CAAAA,OAAO,CAChB,CAQA,MAAO,SAAS,CAAAsD,SAASA,CAAwCrE,KAAe,CAAwB,SAAAqF,KAAA,CAAAnF,SAAA,CAAAC,MAAA,CAAnBC,MAAM,KAAAC,KAAA,CAAAgF,KAAA,GAAAA,KAAA,MAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAANlF,MAAM,CAAAkF,KAAA,IAAApF,SAAA,CAAAoF,KAAA,GACzF,KAAM,CAAA/E,UAAU,CAAI,SAAS,EAAI,CAAAH,MAAM,CAAC,CAAC,CAAC,CAAGA,MAAM,CAAC,CAAC,CAAC,CAAG,CAAC,CAAO,CACjE,KAAM,CAAAI,aAAa,CAAGJ,MAAsB,CAE5C,KAAM,CAAAc,YAAY,CAAIC,GAAkB,EAAK9B,IAAI,CAAC6B,YAAY,CAACd,MAAM,CAAEe,GAAG,CAAC,CAC3E,KAAM,CAAAC,mBAAmB,CAAGA,CAACC,aAA6C,CAAEF,GAAkB,GAAK,CACjG,KAAM,CAAAH,UAAU,CAAGR,aAAa,CAACc,IAAI,CAACV,CAAC,EAAIA,CAAC,CAACC,IAAI,GAAKQ,aAAa,CAAC,CACpE,GAAI,CAACL,UAAU,CAAE,MAAO,CAAAQ,OAAO,CAACC,KAAK,CAAC,qCAAqCJ,aAAa,wBAAwB,CAAC,CACjHhC,IAAI,CAAC+B,mBAAmB,CAACJ,UAAU,CAAEG,GAAG,CAAEZ,UAAU,CAACmB,OAAO,CAAC,CAC/D,CAAC,CAED,GAAI,CACF,KAAM,CAAA+C,IAAI,CAAG1E,KAAK,CAACC,KAAK,CAAE,GAAGI,MAAM,CAAC,CAEpC,MAAO,CAAAqE,IAAI,CAACvD,YAAY,CAExB,MAAO,CAAAuD,IAAI,CAACrD,mBAAmB,CAE/B,MAAO,CACLkD,OAAO,CAAE,IAAI,CACbG,IAAI,CAAEA,IAAiE,CACvEvD,YAAY,CACZE,mBACF,CAAC,CACH,CAAE,MAAOmE,CAAC,CAAE,CACV,MAAO,CAAEjB,OAAO,CAAE,KAAK,CAAE7C,KAAK,CAAE8D,CAAU,CAAErE,YAAY,CAAEE,mBAAoB,CAAC,CACjF,CACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,GAAG,EAAU,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,GAAG,EAAU,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAyBlF,iBAAS,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,YAAY,GAAE,YAAiB,QA4EpF;AAED,iBAAS,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,GAAE,YAAiB,EAAE,OAAO,SAAK,QAiEjG;AAsKD,eAAO,MAAM,IAAI;;;CAGhB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { parse, safeParse } from "./parser.js";
|
|
2
|
-
import type { ActionFn, Cli, Prettify, Subcommand } from "./types.js";
|
|
3
|
-
declare function createSubcommand<const T extends Subcommand>(input: T
|
|
4
|
-
declare function createCli<const T extends Cli>(input: T
|
|
2
|
+
import type { ActionFn, CheckDuplicatedOptions, Cli, Option, Prettify, Subcommand } from "./types.js";
|
|
3
|
+
declare function createSubcommand<const T extends Subcommand>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>>;
|
|
4
|
+
declare function createCli<const T extends Cli>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>>;
|
|
5
|
+
declare function createOptions<const T extends [Option, ...Option[]]>(options: T): T;
|
|
5
6
|
declare const printCliHelp: (params: [Cli, ...Subcommand[]], printOptions?: import("./types.js").PrintHelpOpt) => void, printSubcommandHelp: (subcommand: Subcommand, printOptions?: import("./types.js").PrintHelpOpt, cliName?: string) => void;
|
|
6
|
-
export { createCli, createSubcommand, parse, printCliHelp, printSubcommandHelp, safeParse };
|
|
7
|
+
export { createCli, createSubcommand, createOptions, parse, printCliHelp, printSubcommandHelp, safeParse };
|
|
7
8
|
export type * from "./types.js";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EACV,QAAQ,EACR,sBAAsB,EACtB,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB,iBAAS,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAIjH;AAED,iBAAS,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAInG;AAED,iBAAS,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAE3E;AAED,QAAA,MAAQ,YAAY,8FAAE,mBAAmB,sGAAS,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;AAE3G,mBAAmB,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,GAAG,EACH,YAAY,EAGZ,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACnG,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,CAAC,SAAS,GAAG,EACzD,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,GAAG,EACH,YAAY,EAGZ,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACnG,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,CAAC,SAAS,GAAG,EACzD,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;AA+P/C,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACrG,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,CAAC,SAAS,GAAG,EAC7D,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACnB,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -9,20 +9,13 @@ export type Subcommand = {
|
|
|
9
9
|
* name: "run-app";
|
|
10
10
|
*/
|
|
11
11
|
name: string;
|
|
12
|
-
/**
|
|
13
|
-
* - The action is executed with the result of the parsed arguments.
|
|
14
|
-
* - To get typescript types use `setAction` instead of this.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* const helpCommand = createSubcommand({ name: "help", options: [...] });
|
|
18
|
-
* helpCommand.setAction(res => console.log(res));
|
|
19
|
-
*/
|
|
20
|
-
action?: (results?: any) => void;
|
|
21
12
|
/**
|
|
22
13
|
* - The description of the subcommand.
|
|
23
14
|
* - Used for generating the help message.
|
|
24
15
|
*/
|
|
25
16
|
description?: string;
|
|
17
|
+
/** - The usage message in the help message. */
|
|
18
|
+
usage?: string;
|
|
26
19
|
/** - Used for generating the help message. */
|
|
27
20
|
placeholder?: string;
|
|
28
21
|
/**
|
|
@@ -55,15 +48,19 @@ export type Subcommand = {
|
|
|
55
48
|
* which arguments are optional.
|
|
56
49
|
*/
|
|
57
50
|
arguments?: [Argument, ...Argument[]];
|
|
51
|
+
/**
|
|
52
|
+
* - The action is executed with the result of the parsed arguments.
|
|
53
|
+
* - To get typescript types use `setAction` instead of this.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* const helpCommand = createSubcommand({ name: "help", options: [...] });
|
|
57
|
+
* helpCommand.setAction(res => console.log(res));
|
|
58
|
+
*/
|
|
59
|
+
action?: (results?: any) => void;
|
|
58
60
|
};
|
|
59
61
|
export type Cli = Prettify<Omit<Subcommand, "name"> & {
|
|
60
62
|
/** - The name of the CLI program. */
|
|
61
63
|
cliName: string;
|
|
62
|
-
/**
|
|
63
|
-
* - The usage of the CLI program.
|
|
64
|
-
* - Used for generating the help message.
|
|
65
|
-
*/
|
|
66
|
-
usage?: string;
|
|
67
64
|
}>;
|
|
68
65
|
export type Option = {
|
|
69
66
|
/**
|
|
@@ -241,8 +238,8 @@ export type PrintMethods<N extends Subcommand["name"] | undefined> = {
|
|
|
241
238
|
printCliHelp: (options?: PrintHelpOpt) => void;
|
|
242
239
|
printSubcommandHelp: (subcommand: LiteralUnion<NonNullable<N>>, options?: PrintHelpOpt) => void;
|
|
243
240
|
};
|
|
244
|
-
export type UnSafeParseResult<S extends Partial<Subcommand>[]> = Prettify<ParseResult<S> & PrintMethods<S[number]["name"]>>;
|
|
245
|
-
export type SafeParseResult<S extends Partial<Subcommand>[]> = Prettify<({
|
|
241
|
+
export type UnSafeParseResult<S extends Partial<Subcommand>[]> = CheckDuplicatedSubcommands<S> extends infer E extends string ? E : Prettify<ParseResult<S> & PrintMethods<S[number]["name"]>>;
|
|
242
|
+
export type SafeParseResult<S extends Partial<Subcommand>[]> = CheckDuplicatedSubcommands<S> extends infer E extends string ? E : Prettify<({
|
|
246
243
|
success: false;
|
|
247
244
|
error: Error;
|
|
248
245
|
} | {
|
|
@@ -252,5 +249,33 @@ export type SafeParseResult<S extends Partial<Subcommand>[]> = Prettify<({
|
|
|
252
249
|
export type ActionFn<T extends Subcommand | Cli> = {
|
|
253
250
|
setAction: (actions: (res: UnSafeParseResult<[T]>) => void) => void;
|
|
254
251
|
};
|
|
252
|
+
/** - Combine `name` and `aliases` to a `string[]` */
|
|
253
|
+
type MapNameAndAliases2StrArr<T extends {
|
|
254
|
+
name?: string;
|
|
255
|
+
aliases?: string[];
|
|
256
|
+
}[]> = T extends [
|
|
257
|
+
infer First extends Subcommand,
|
|
258
|
+
...infer Rest
|
|
259
|
+
] ? Rest extends {
|
|
260
|
+
name?: string;
|
|
261
|
+
aliases?: string[];
|
|
262
|
+
}[] ? [First["name"], ...(First["aliases"] extends string[] ? First["aliases"] : []), ...MapNameAndAliases2StrArr<Rest>] : [First["name"], ...(First["aliases"] extends string[] ? First["aliases"] : [])] : [];
|
|
263
|
+
/**
|
|
264
|
+
* - Find duplicated items in an array and return it
|
|
265
|
+
* - Return `false` if not found
|
|
266
|
+
*/
|
|
267
|
+
type IsDuplicatesInArr<Input extends any[]> = Input extends [infer Item, ...infer Rest] ? Rest extends any[] ? Item extends Rest[number] ? Item : IsDuplicatesInArr<Rest> : false : false;
|
|
268
|
+
/**
|
|
269
|
+
* - Check if there are duplicated options including aliases in `subcommand`
|
|
270
|
+
* - Return an error message if duplicated is found
|
|
271
|
+
* - Return `subcommand` if not found
|
|
272
|
+
*/
|
|
273
|
+
export type CheckDuplicatedOptions<T extends Subcommand | Cli> = T["options"] extends infer O extends Option[] ? IsDuplicatesInArr<MapNameAndAliases2StrArr<O>> extends infer D extends string ? `>>> Error: Duplicated Options \`${D}\` <<<` : T : T;
|
|
274
|
+
/**
|
|
275
|
+
* - Check for duplicated subcommands including aliases
|
|
276
|
+
* - Return an error message if duplicated is found
|
|
277
|
+
* - Return the `subcommand[]` if no error
|
|
278
|
+
*/
|
|
279
|
+
export type CheckDuplicatedSubcommands<T extends Partial<Subcommand>[]> = IsDuplicatesInArr<MapNameAndAliases2StrArr<T>> extends infer D extends string ? `>>> Error: Duplicated Subcommand \`${D}\` <<<` : T;
|
|
255
280
|
export {};
|
|
256
281
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,QAAQ,CACxB,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;IACzB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;OASG;IACH,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;OASG;IACH,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,YAAY,CAAC,EAAE,WAAW,CAAC;QAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,EAAE,GACvG,UAAU,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,GAC1F,SAAS,CAAC;AAEd;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,MAAM,CAAC,SAAS,QAAQ,EAAE,GAC7G;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAA;KAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;CAAE,GACvF,SAAS,CAAC;AAEd,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAExD,kEAAkE;AAClE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/D,sDAAsD;AACtD,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhG,0CAA0C;AAC1C,KAAK,UAAU,CAAC,CAAC,IAAI,QAAQ,CAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,EAAE,GAClF,UAAU,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,GAC1F,MAAM,CAAC;AAEX,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,QAAQ,EAAE,GACrF;IAAE,SAAS,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAA;SAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;KAAE,CAAA;CAAE,GACtG,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GACrF;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,GACxB,MAAM,CAAC;AAEX,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,EAAE,GACjE;IACE,KAAK,EAAE,UAAU,CAAC;SACf,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACpF,SAAS,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAClC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAC/B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GACrB,KAAK;KACV,CAAC,CAAC;CACJ,GACD,MAAM,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CACtB;QAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GACrB,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GACtC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAC1C;CACF,CAAC,MAAM,CAAC,CAAC;AAEV,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI;IACnE,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,mBAAmB,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;CACjG,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAC3D,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACxD,CAAC,GACD,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEjE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IACzD,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACxD,CAAC,GACD,QAAQ,CACN,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAC/G,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI;IACjD,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,qDAAqD;AACrD,KAAK,wBAAwB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,IAAI,CAAC,SAAS;IAC3F,MAAM,KAAK,SAAS,UAAU;IAC9B,GAAG,MAAM,IAAI;CACd,GACG,IAAI,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,GAClD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,GAClH,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,GACjF,EAAE,CAAC;AAEP;;;GAGG;AACH,KAAK,iBAAiB,CAAC,KAAK,SAAS,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACnF,IAAI,SAAS,GAAG,EAAE,GAChB,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,GACvB,IAAI,GACJ,iBAAiB,CAAC,IAAI,CAAC,GACzB,KAAK,GACP,KAAK,CAAC;AAEV;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,EAAE,GAC1G,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GAC3E,mCAAmC,CAAC,QAAQ,GAC5C,CAAC,GACH,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IACpE,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACzE,sCAAsC,CAAC,QAAQ,GAC/C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zod-args-parser",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "A strictly typed command-line arguments parser powered by Zod.",
|
|
5
|
+
"author": "Ahmed ALABSI <alabsi91@gmail>",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/alabsi91/zod-args-parser.git"
|
|
10
|
+
},
|
|
5
11
|
"type": "module",
|
|
6
12
|
"scripts": {
|
|
7
|
-
"dev": "tsx watch
|
|
13
|
+
"dev": "tsx watch example/cli.ts",
|
|
8
14
|
"build": "node scripts/build.mjs",
|
|
9
15
|
"test": "eslint src/** --fix && tsc --noEmit && tsx test/test.ts",
|
|
10
16
|
"prepare": "npm run test && npm run build"
|
|
@@ -24,6 +30,14 @@
|
|
|
24
30
|
"lib",
|
|
25
31
|
"src"
|
|
26
32
|
],
|
|
33
|
+
"keywords": [
|
|
34
|
+
"command-line",
|
|
35
|
+
"cli",
|
|
36
|
+
"arguments",
|
|
37
|
+
"parser",
|
|
38
|
+
"zod",
|
|
39
|
+
"typescript"
|
|
40
|
+
],
|
|
27
41
|
"dependencies": {
|
|
28
42
|
"chalk": "^5.3.0",
|
|
29
43
|
"zod": "^3.23.8"
|
|
@@ -32,6 +46,7 @@
|
|
|
32
46
|
"@babel/core": "^7.26.0",
|
|
33
47
|
"@babel/preset-env": "^7.26.0",
|
|
34
48
|
"@babel/preset-typescript": "^7.26.0",
|
|
49
|
+
"@eslint/compat": "^1.2.3",
|
|
35
50
|
"@eslint/js": "^9.14.0",
|
|
36
51
|
"@types/babel__core": "^7.20.5",
|
|
37
52
|
"@types/node": "^22.9.0",
|
package/src/help.ts
CHANGED
|
@@ -3,14 +3,13 @@ import { concat, getDefaultValueFromSchema, indent, ln, print, println, transfor
|
|
|
3
3
|
|
|
4
4
|
import type { Argument, Cli, Option, PrintHelpOpt, Subcommand } from "./types.js";
|
|
5
5
|
|
|
6
|
-
/** Colors */
|
|
7
6
|
const colors: NonNullable<Required<PrintHelpOpt["customColors"]>> = {
|
|
8
7
|
title: chalk.bold.blue,
|
|
9
8
|
description: chalk.white,
|
|
10
9
|
default: chalk.dim.italic,
|
|
11
10
|
optional: chalk.dim.italic,
|
|
12
11
|
exampleTitle: chalk.yellow,
|
|
13
|
-
example: chalk.dim
|
|
12
|
+
example: chalk.dim,
|
|
14
13
|
command: chalk.yellow,
|
|
15
14
|
option: chalk.cyan,
|
|
16
15
|
argument: chalk.green,
|
|
@@ -126,13 +125,15 @@ function printSubcommandHelp(subcommand: Subcommand, printOptions: PrintHelpOpt
|
|
|
126
125
|
};
|
|
127
126
|
|
|
128
127
|
// Print command usage
|
|
129
|
-
const usage =
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
128
|
+
const usage =
|
|
129
|
+
subcommand.usage ??
|
|
130
|
+
concat(
|
|
131
|
+
c.punctuation("$"),
|
|
132
|
+
cliName,
|
|
133
|
+
c.command(subcommand.name),
|
|
134
|
+
subcommand.options?.length ? c.option("[options]") : "",
|
|
135
|
+
subcommand.arguments?.length || subcommand.allowPositional ? c.argument("<arguments>") : "",
|
|
136
|
+
);
|
|
136
137
|
printTitle("Usage");
|
|
137
138
|
println();
|
|
138
139
|
println(indent(2), usage, ln(1));
|
|
@@ -293,7 +294,7 @@ function printPreparedCommands(commandsToPrint: PreparedToPrint[], c: typeof col
|
|
|
293
294
|
for (const { names, placeholder, description } of commandsToPrint) {
|
|
294
295
|
const optLength = names.length + (placeholder?.length ?? 0);
|
|
295
296
|
const spacing = longest + 1 - optLength;
|
|
296
|
-
const normalizeDesc = description.replace(/\n/g, "\n" + indent(longest + 7));
|
|
297
|
+
const normalizeDesc = description.replace(/\n/g, "\n" + indent(longest + 7) + c.punctuation("└"));
|
|
297
298
|
|
|
298
299
|
const coloredNames = names
|
|
299
300
|
.split(/(,)/)
|
package/src/index.ts
CHANGED
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import { help } from "./help.js";
|
|
2
2
|
import { parse, safeParse } from "./parser.js";
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
ActionFn,
|
|
6
|
+
CheckDuplicatedOptions,
|
|
7
|
+
Cli,
|
|
8
|
+
Option,
|
|
9
|
+
Prettify,
|
|
10
|
+
Subcommand,
|
|
11
|
+
UnSafeParseResult,
|
|
12
|
+
} from "./types.js";
|
|
5
13
|
|
|
6
|
-
function createSubcommand<const T extends Subcommand>(input: T
|
|
14
|
+
function createSubcommand<const T extends Subcommand>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>> {
|
|
7
15
|
return Object.assign(input, {
|
|
8
16
|
setAction: (action: (res: UnSafeParseResult<[T]>) => void) => (input.action = action),
|
|
9
17
|
});
|
|
10
18
|
}
|
|
11
19
|
|
|
12
|
-
function createCli<const T extends Cli>(input: T
|
|
20
|
+
function createCli<const T extends Cli>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>> {
|
|
13
21
|
return Object.assign(input, {
|
|
14
22
|
setAction: (action: (res: UnSafeParseResult<[T]>) => void) => (input.action = action),
|
|
15
23
|
});
|
|
16
24
|
}
|
|
17
25
|
|
|
26
|
+
function createOptions<const T extends [Option, ...Option[]]>(options: T): T {
|
|
27
|
+
return options;
|
|
28
|
+
}
|
|
29
|
+
|
|
18
30
|
const { printCliHelp, printSubcommandHelp } = help;
|
|
19
31
|
|
|
20
|
-
export { createCli, createSubcommand, parse, printCliHelp, printSubcommandHelp, safeParse };
|
|
32
|
+
export { createCli, createSubcommand, createOptions, parse, printCliHelp, printSubcommandHelp, safeParse };
|
|
21
33
|
|
|
22
34
|
export type * from "./types.js";
|