Command-Option-Argument
Last updated
Was this helpful?
Last updated
Was this helpful?
Yet another parser for command line options.
COA is a parser for command line options that aim to get maximum profit from formalization your program API. Once you write definition in terms of commands, options and arguments you automaticaly get:
Command line help text
Program API for use COA-based programs as modules
Shell completion
Rich types for options and arguments, such as arrays, boolean flags and required
Commands can be async throught using promising (powered by )
Easy submoduling some existing commands to new top-level one
Combined validation and complex parsing of values
Localization
Shell-mode
Configs
Aliases
Defaults
Command is a top level entity. Commands may have options and arguments.
Returns object containing all its subcommands as methods to use from other programs. @returns {Object}
Set a canonical command identifier to be used anywhere in the API.
@param String _name
command name
@returns COA.Cmd this
instance (for chainability)
Set a long description for command to be used anywhere in text messages.
@param String _title
command title
@returns COA.Cmd this
instance (for chainability)
Create new or add existing subcommand for current command.
@param COA.Cmd [cmd]
existing command instance
@returns COA.Cmd new or added subcommand instance
Create option for current command.
@returns COA.Opt new
option instance
Create argument for current command.
@returns COA.Opt new
argument instance
Add (or set) action for current command.
@param Function act
action function, invoked in the context of command instance and has the parameters:
- Object opts
parsed options
- Array args
parsed arguments
- Object res
actions result accumulator
It can return rejected promise by Cmd.reject (in case of error) or any other value treated as result.
@param {Boolean} [force=false] flag for set action instead add to existings
@returns COA.Cmd this
instance (for chainability)
Apply function with arguments in context of command instance.
@param Function fn
@param Array args
@returns COA.Cmd this
instance (for chainability)
Set custom additional completion for current command.
@param Function fn
completion generation function, invoked in the context of command instance. Accepts parameters:
- Object opts
completion options
It can return promise or any other value treated as result.
@returns COA.Cmd this
instance (for chainability)
Make command "helpful", i.e. add -h --help flags for print usage.
@returns COA.Cmd this
instance (for chainability)
Adds shell completion to command, adds "completion" subcommand, that makes all the magic.
Must be called only on root command.
@returns COA.Cmd this
instance (for chainability)
Build full usage text for current command instance.
@returns String usage
text
Parse arguments from simple format like NodeJS process.argv and run ahead current program, i.e. call process.exit when all actions done.
@param Array argv
@returns COA.Cmd this
instance (for chainability)
Invoke specified (or current) command using provided options and arguments.
@param String|Array cmds
subcommand to invoke (optional)
@param Object opts
command options (optional)
@param Object args
command arguments (optional)
@returns Q.Promise
Return reject of actions results promise.
Use in .act() for return with error.
@param Object reason
reject reason
You can customize toString() method and exitCode property of reason object.
@returns Q.promise rejected promise
Finish chain for current subcommand and return parent command instance.
@returns COA.Cmd parent
command
Option is a named entity. Options may have short and long keys for use from command line. @namespace @class Presents option
Set a canonical option identifier to be used anywhere in the API.
@param String _name
option name
@returns COA.Opt this
instance (for chainability)
Set a long description for option to be used anywhere in text messages.
@param String _title
option title
@returns COA.Opt this
instance (for chainability)
Set a short key for option to be used with one hyphen from command line.
@param String _short
@returns COA.Opt this
instance (for chainability)
Set a short key for option to be used with double hyphens from command line.
@param String _long
@returns COA.Opt this
instance (for chainability)
Make an option boolean, i.e. option without value.
@returns COA.Opt this
instance (for chainability)
Makes an option accepts multiple values.
Otherwise, the value will be used by the latter passed.
@returns COA.Opt this
instance (for chainability)
Makes an option req.
@returns COA.Opt this
instance (for chainability)
Makes an option to act as a command, i.e. program will exit just after option action.
@returns COA.Opt this
instance (for chainability)
Set a validation (or value) function for argument.
Value from command line passes through before becoming available from API.
Using for validation and convertion simple types to any values.
@param Function _val
validating function, invoked in the context of option instance and has one parameter with value from command line
@returns COA.Opt this
instance (for chainability)
Set a default value for option. Default value passed through validation function as ordinary value.
@param Object _def
@returns COA.Opt this
instance (for chainability)
Make option value inputting stream. It's add useful validation and shortcut for STDIN. @returns {COA.Opt} this
instance (for chainability)
Make option value outputing stream.
It's add useful validation and shortcut for STDOUT.
@returns COA.Opt this
instance (for chainability)
Add action for current option command. This action is performed if the current option is present in parsed options (with any value).
@param Function act
action function, invoked in the context of command instance and has the parameters:
- Object opts
parsed options
- Array args
parsed arguments
- Object res
actions result accumulator
It can return rejected promise by Cmd.reject (in case of error) or any other value treated as result.
@returns COA.Opt this
instance (for chainability)
Set custom additional completion for current option.
@param Function fn
completion generation function, invoked in the context of command instance. Accepts parameters:
- Object opts
completion options
It can return promise or any other value treated as result.
@returns COA.Opt this
instance (for chainability)
Finish chain for current option and return parent command instance.
@returns COA.Cmd parent
command
Argument is a unnamed entity. From command line arguments passed as list of unnamed values.
Set a canonical argument identifier to be used anywhere in text messages.
@param String _name
argument name
@returns COA.Arg this
instance (for chainability)
Set a long description for argument to be used anywhere in text messages.
@param String _title
argument title
@returns COA.Arg this
instance (for chainability)
Makes an argument accepts multiple values.
Otherwise, the value will be used by the latter passed.
@returns COA.Arg this
instance (for chainability)
Makes an argument req.
@returns COA.Arg this
instance (for chainability)
Set a validation (or value) function for argument.
Value from command line passes through before becoming available from API.
Using for validation and convertion simple types to any values.
@param Function _val
validating function, invoked in the context of argument instance and has one parameter with value from command line
@returns COA.Arg this
instance (for chainability)
Set a default value for argument. Default value passed through validation function as ordinary value.
@param Object _def
@returns COA.Arg this
instance (for chainability)
Make argument value outputing stream.
It's add useful validation and shortcut for STDOUT.
@returns COA.Arg this
instance (for chainability)
Set custom additional completion for current argument.
@param Function fn
completion generation function, invoked in the context of command instance. Accepts parameters:
- Object opts
completion options
It can return promise or any other value treated as result.
@returns COA.Arg this
instance (for chainability)
Finish chain for current option and return parent command instance.
@returns COA.Cmd parent
command