UNPKG

awais-tool

Version:
87 lines (67 loc) 2.14 kB
import constructParserOptions from "minimist-options"; import decamelizeKeys from "decamelize-keys"; const buildParserFlags = ({ flags, booleanDefault }) => { const parserFlags = {}; for (const [flagKey, flagValue] of Object.entries(flags)) { const flag = { ...flagValue }; // `minimist-options` expects `flag.alias` if (flag.shortFlag) { flag.alias = flag.shortFlag; delete flag.shortFlag; } if ( booleanDefault !== undefined && flag.type === "boolean" && !Object.hasOwn(flag, "default") ) { flag.default = flag.isMultiple ? [booleanDefault] : booleanDefault; } if (flag.isMultiple) { flag.type = flag.type ? `${flag.type}-array` : "array"; flag.default ??= []; delete flag.isMultiple; } if (Array.isArray(flag.aliases)) { if (flag.alias) { flag.aliases.push(flag.alias); } flag.alias = flag.aliases; delete flag.aliases; } parserFlags[flagKey] = flag; } return parserFlags; }; export const buildParserOptions = (options) => { let parserOptions = buildParserFlags(options); parserOptions.arguments = options.input; parserOptions = decamelizeKeys(parserOptions, { separator: "-", exclude: ["stopEarly", "--"], }); if (options.inferType) { delete parserOptions.arguments; } // Add --help and --version to known flags if autoHelp or autoVersion are set if (!options.allowUnknownFlags) { if (options.autoHelp && !parserOptions.help) { parserOptions.help = { type: "boolean" }; } if (options.autoVersion && !parserOptions.version) { parserOptions.version = { type: "boolean" }; } } parserOptions = constructParserOptions(parserOptions); parserOptions.configuration = { ...parserOptions.configuration, "greedy-arrays": false, }; if (parserOptions["--"]) { parserOptions.configuration["populate--"] = true; } if (!options.allowUnknownFlags) { // Collect unknown options in `argv._` to be checked later. parserOptions.configuration["unknown-options-as-args"] = true; } return parserOptions; };