UNPKG

meow

Version:
114 lines (84 loc) 2.67 kB
import { d as decamelizeKeys, b as constructParserOptions, e as decamelize } from './dependencies.js'; const addCamelCaseAlias = (flagKey, flag) => { if (flagKey === '--') { return; } const decamelizedKey = decamelize(flagKey, {separator: '-'}); if (decamelizedKey === flagKey) { return; } let aliases = []; if (flag.alias !== undefined) { aliases = Array.isArray(flag.alias) ? flag.alias : [flag.alias]; } if (aliases.includes(flagKey)) { return; } aliases.push(flagKey); flag.alias = aliases.length === 1 ? aliases[0] : aliases; }; 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)) { const aliases = [...flag.aliases]; if (flag.alias) { aliases.push(flag.alias); } flag.alias = aliases; delete flag.aliases; } addCamelCaseAlias(flagKey, flag); parserFlags[flagKey] = flag; } return parserFlags; }; 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, 'parse-numbers': options.inferType, }; if (options.commands) { parserOptions.configuration['halt-at-non-option'] = true; } 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; }; export { buildParserOptions };