1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const errors_1 = require("./errors");
|
4 | function validate(parse) {
|
5 | function validateArgs() {
|
6 | const maxArgs = parse.input.args.length;
|
7 | if (parse.input.strict && parse.output.argv.length > maxArgs) {
|
8 | const extras = parse.output.argv.slice(maxArgs);
|
9 | throw new errors_1.UnexpectedArgsError({ parse, args: extras });
|
10 | }
|
11 | const requiredArgs = parse.input.args.filter(a => a.required);
|
12 | const missingRequiredArgs = requiredArgs.slice(parse.output.argv.length);
|
13 | if (missingRequiredArgs.length) {
|
14 | throw new errors_1.RequiredArgsError({ parse, args: missingRequiredArgs });
|
15 | }
|
16 | }
|
17 | function validateFlags() {
|
18 | const flags = Object.values(parse.input.flags).filter(f => f.required && f.value === undefined);
|
19 | if (flags.length)
|
20 | throw new errors_1.RequiredFlagError({ parse, flags });
|
21 | }
|
22 | validateArgs();
|
23 | validateFlags();
|
24 | }
|
25 | exports.validate = validate;
|