mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user