85 lines
2.0 KiB
JavaScript
85 lines
2.0 KiB
JavaScript
import { d as decamelizeKeys, b as constructParserOptions } from './dependencies.js';
|
|
|
|
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 = 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;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
export { buildParserOptions };
|