feat: return clear error when multiple values for a cli flag are given

* feat: return clear error when multiple values for a cli flag are given

* chore: change function signature

* test: add testcase for array type yargs parameter
This commit is contained in:
Arthur Joppart
2022-12-05 13:36:54 +01:00
committed by GitHub
parent c46d01d3d7
commit 5c79e60238
2 changed files with 28 additions and 0 deletions

View File

@@ -71,6 +71,18 @@ export class YargsCliExtractor extends CliExtractor {
*/
private createYArgv(argv: readonly string[]): Argv {
let yArgv = yargs(argv.slice(2));
// Error and show help message when multiple values were provided
// for a non Array type parameter
yArgv.check((args): boolean => {
for (const [ name, options ] of Object.entries(this.yargsArgOptions)) {
if (options.type !== 'array' && Array.isArray(args[name])) {
throw new Error(`Multiple values for --${name} (-${options.alias}) were provided where only one is allowed`);
}
}
return true;
});
if (this.yargvOptions.usage !== undefined) {
yArgv = yArgv.usage(this.yargvOptions.usage);
}