39 lines
792 B
JavaScript
Raw Normal View History

2021-06-12 00:40:56 -05:00
const parseArgs = require('minimist');
const { InvalidArgumentError } = require('../../errors');
class ArgsParser {
constructor(minimistOptions = ArgsParser.DEFAULT_OPTIONS, requiredArgs = []) {
this.options = minimistOptions;
this.required = requiredArgs;
}
parse(argv) {
const parsedArgs = parseArgs(argv, this.options);
this.validate(parsedArgs);
2021-06-12 02:05:05 -05:00
const { _: [directory], ...rest } = parsedArgs;
2021-06-12 00:40:56 -05:00
2021-06-12 02:05:05 -05:00
return {
...rest,
directory
};
2021-06-12 00:40:56 -05:00
}
validate(parsedArgs) {
this.required.forEach((arg) => {
if (!parsedArgs[arg]) {
throw new InvalidArgumentError(`--${arg} is required!`);
}
});
}
}
ArgsParser.DEFAULT_OPTIONS = {
boolean: ['display'],
default: {
display: false
}
};
module.exports = ArgsParser;