zod-args-parser 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -10
- package/lib/commonjs/autocomplete.js +40 -0
- package/lib/commonjs/autocomplete.js.map +1 -0
- 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/autocomplete.js +40 -0
- package/lib/module/autocomplete.js.map +1 -0
- 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/autocomplete.d.ts +4 -0
- package/lib/typescript/autocomplete.d.ts.map +1 -0
- package/lib/typescript/help.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/parser.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +11 -14
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/autocomplete.ts +70 -0
- package/src/help.ts +11 -10
- package/src/index.ts +13 -3
- package/src/parser.ts +24 -7
- package/src/types.ts +13 -16
- 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
|
|
1
|
+
import{help}from"./help.js";import{parse,safeParse}from"./parser.js";import{generateAutocompleteScript}from"./autocomplete.js";function createCli(input){return Object.assign(input,{setAction:action=>input.action=action});}function createSubcommand(input){return Object.assign(input,{setAction:action=>input.action=action});}function createOptions(options){return options;}const{printCliHelp,printSubcommandHelp}=help;export{createCli,createSubcommand,createOptions,parse,safeParse,printCliHelp,printSubcommandHelp,generateAutocompleteScript};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["help","parse","safeParse","
|
|
1
|
+
{"version":3,"names":["help","parse","safeParse","generateAutocompleteScript","createCli","input","Object","assign","setAction","action","createSubcommand","createOptions","options","printCliHelp","printSubcommandHelp"],"sourceRoot":"../../src","sources":["index.ts"],"sourcesContent":["import { help } from \"./help.js\";\nimport { parse, safeParse } from \"./parser.js\";\nimport { generateAutocompleteScript } from \"./autocomplete.js\";\n\nimport type {\n ActionFn,\n CheckDuplicatedOptions,\n Cli,\n Option,\n Prettify,\n Subcommand,\n UnSafeParseResult,\n} from \"./types.js\";\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 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 createOptions<const T extends [Option, ...Option[]]>(options: T): T {\n return options;\n}\n\nconst { printCliHelp, printSubcommandHelp } = help;\n\nexport {\n createCli,\n createSubcommand,\n createOptions,\n parse,\n safeParse,\n printCliHelp,\n printSubcommandHelp,\n generateAutocompleteScript,\n};\n\nexport type * from \"./types.js\";\n"],"mappings":"AAAA,OAASA,IAAI,KAAQ,WAAW,CAChC,OAASC,KAAK,CAAEC,SAAS,KAAQ,aAAa,CAC9C,OAASC,0BAA0B,KAAQ,mBAAmB,CAY9D,QAAS,CAAAC,SAASA,CAAsBC,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,CAAAC,gBAAgBA,CAA6BL,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,CAAAE,aAAaA,CAAwCC,OAAU,CAAK,CAC3E,MAAO,CAAAA,OAAO,CAChB,CAEA,KAAM,CAAEC,YAAY,CAAEC,mBAAoB,CAAC,CAAGd,IAAI,CAElD,OACEI,SAAS,CACTM,gBAAgB,CAChBC,aAAa,CACbV,KAAK,CACLC,SAAS,CACTW,YAAY,CACZC,mBAAmB,CACnBX,0BAA0B","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":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../src/autocomplete.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAgEpF"}
|
|
@@ -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,9 +1,10 @@
|
|
|
1
1
|
import { parse, safeParse } from "./parser.js";
|
|
2
|
+
import { generateAutocompleteScript } from "./autocomplete.js";
|
|
2
3
|
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
4
|
declare function createCli<const T extends Cli>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>>;
|
|
5
|
+
declare function createSubcommand<const T extends Subcommand>(input: CheckDuplicatedOptions<T>): Prettify<T & ActionFn<T>>;
|
|
5
6
|
declare function createOptions<const T extends [Option, ...Option[]]>(options: T): T;
|
|
6
7
|
declare const printCliHelp: (params: [Cli, ...Subcommand[]], printOptions?: import("./types.js").PrintHelpOpt) => void, printSubcommandHelp: (subcommand: Subcommand, printOptions?: import("./types.js").PrintHelpOpt, cliName?: string) => void;
|
|
7
|
-
export { createCli, createSubcommand, createOptions, parse, printCliHelp, printSubcommandHelp,
|
|
8
|
+
export { createCli, createSubcommand, createOptions, parse, safeParse, printCliHelp, printSubcommandHelp, generateAutocompleteScript, };
|
|
8
9
|
export type * from "./types.js";
|
|
9
10
|
//# 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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EACV,QAAQ,EACR,sBAAsB,EACtB,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB,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,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,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,EACL,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,GAC3B,CAAC;AAEF,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
|
/**
|
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zod-args-parser",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "A strictly typed command-line arguments parser powered by Zod.",
|
|
5
5
|
"author": "Ahmed ALABSI <alabsi91@gmail>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"scripts": {
|
|
13
|
-
"dev": "tsx watch
|
|
13
|
+
"dev": "tsx watch example/cli.ts",
|
|
14
14
|
"build": "node scripts/build.mjs",
|
|
15
15
|
"test": "eslint src/** --fix && tsc --noEmit && tsx test/test.ts",
|
|
16
16
|
"prepare": "npm run test && npm run build"
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"@babel/core": "^7.26.0",
|
|
47
47
|
"@babel/preset-env": "^7.26.0",
|
|
48
48
|
"@babel/preset-typescript": "^7.26.0",
|
|
49
|
+
"@eslint/compat": "^1.2.3",
|
|
49
50
|
"@eslint/js": "^9.14.0",
|
|
50
51
|
"@types/babel__core": "^7.20.5",
|
|
51
52
|
"@types/node": "^22.9.0",
|
|
@@ -60,4 +61,4 @@
|
|
|
60
61
|
"typescript": "^5.6.3",
|
|
61
62
|
"typescript-eslint": "^8.14.0"
|
|
62
63
|
}
|
|
63
|
-
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { transformOptionToArg } from "./utils.js";
|
|
2
|
+
|
|
3
|
+
import type { Cli, Subcommand } from "./types.js";
|
|
4
|
+
|
|
5
|
+
/** - Generate bash autocomplete script for your CLI */
|
|
6
|
+
export function generateAutocompleteScript(...params: [Cli, ...Subcommand[]]): string {
|
|
7
|
+
const [cli, ...subcommands] = params;
|
|
8
|
+
|
|
9
|
+
const commandName = cli.cliName;
|
|
10
|
+
const commands = subcommands.map(subcommand => subcommand.name);
|
|
11
|
+
const commandOptions = subcommands.reduce((acc: Record<string, string[]>, subcommand) => {
|
|
12
|
+
if (!subcommand.name || !subcommand.options?.length) return acc;
|
|
13
|
+
acc[subcommand.name] = subcommand.options.map(option => transformOptionToArg(option.name));
|
|
14
|
+
return acc;
|
|
15
|
+
}, {});
|
|
16
|
+
|
|
17
|
+
let switchCase = "";
|
|
18
|
+
for (const [key, value] of Object.entries(commandOptions)) {
|
|
19
|
+
switchCase += ` ${key}|${key[0]})\n`;
|
|
20
|
+
switchCase += ` opts="${value.join(" ")}"\n`;
|
|
21
|
+
switchCase += " ;;\n";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (cli.options?.length) {
|
|
25
|
+
switchCase += ` "-"*)\n`;
|
|
26
|
+
switchCase += ` opts="${cli.options.map(option => transformOptionToArg(option.name)).join(" ")}"\n`;
|
|
27
|
+
switchCase += " ;;\n";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return `_${commandName}_autocomplete() {
|
|
31
|
+
local cur prev commands opts subcommand used_opts filtered_opts
|
|
32
|
+
|
|
33
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
34
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
35
|
+
subcommand="\${COMP_WORDS[1]}"
|
|
36
|
+
|
|
37
|
+
commands="${commands.join(" ")}"
|
|
38
|
+
|
|
39
|
+
case "$subcommand" in
|
|
40
|
+
${switchCase}
|
|
41
|
+
esac
|
|
42
|
+
|
|
43
|
+
used_opts=""
|
|
44
|
+
if [[ " \${commands[@]} " =~ " $subcommand " ]]; then
|
|
45
|
+
for word in "\${COMP_WORDS[@]:2}"; do
|
|
46
|
+
if [[ "$word" =~ ^- ]]; then
|
|
47
|
+
used_opts+=" $word"
|
|
48
|
+
fi
|
|
49
|
+
done
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
if [[ -n "$opts" ]]; then
|
|
53
|
+
filtered_opts=""
|
|
54
|
+
for opt in $opts; do
|
|
55
|
+
if [[ ! " $used_opts " =~ " $opt " ]]; then
|
|
56
|
+
filtered_opts+="$opt "
|
|
57
|
+
fi
|
|
58
|
+
done
|
|
59
|
+
COMPREPLY=( $(compgen -W "$filtered_opts" -- "$cur") )
|
|
60
|
+
return
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
if [[ "\${COMP_CWORD}" -eq 1 ]]; then
|
|
64
|
+
COMPREPLY=( $(compgen -W "$commands" -- "$cur") )
|
|
65
|
+
fi
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
complete -F _${commandName}_autocomplete ${commandName}
|
|
69
|
+
`;
|
|
70
|
+
}
|
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(/(,)/)
|