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); const { _: [directory], ...rest } = parsedArgs; return { ...rest, directory }; } 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;