/** * CLI params parser, to be used before we have deducted * what commands and options are supported in given context. */ import commandsSchema from './commands-schema.js' /** * Parses command line arguments, identifies the command and * its options, and returns an object containing these * details. It also determines if the command is a * container command or if a help request has been made, * and sets corresponding flags in the returned object. */ export default (providedCommandsSchema = commandsSchema, commands, options) => { const command = commands.join(' ') const commandSchema = providedCommandsSchema.get(command) const result = { commands, options, command, commandSchema, commandsSchema: providedCommandsSchema, } if (!commandSchema) { result.isContainerCommand = Array.from(providedCommandsSchema.keys()).some( (commandName) => commandName.startsWith(`${command} `), ) if (result.isContainerCommand) { result.isHelpRequest = true return result } } return result }