123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- Color = require('./color').Color
- Cmd = require('./cmd').Cmd
- Opt = require('./opt').Opt
- ###*
- Argument
- Unnamed entity. From command line arguments passed as list of unnamed values.
- @namespace
- @class Presents argument
- ###
- exports.Arg = class Arg
- ###*
- @constructs
- @param {COA.Cmd} cmd parent command
- ###
- constructor: (@_cmd) -> @_cmd._args.push @
- ###*
- Set a canonical argument identifier to be used anywhere in text messages.
- @param {String} _name argument name
- @returns {COA.Arg} this instance (for chainability)
- ###
- name: Opt::name
- ###*
- 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)
- ###
- title: Cmd::title
- ###*
- Makes an argument accepts multiple values.
- Otherwise, the value will be used by the latter passed.
- @returns {COA.Arg} this instance (for chainability)
- ###
- arr: Opt::arr
- ###*
- Makes an argument required.
- @returns {COA.Arg} this instance (for chainability)
- ###
- req: Opt::req
- ###*
- 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)
- ###
- val: Opt::val
- ###*
- 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)
- ###
- def: Opt::def
- ###*
- Set custom additional completion for current argument.
- @param {Function} completion generation function,
- invoked in the context of argument 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)
- ###
- comp: Cmd::comp
- ###*
- Make argument value inputting stream.
- It's add useful validation and shortcut for STDIN.
- @returns {COA.Arg} this instance (for chainability)
- ###
- input: Opt::input
- ###*
- Make argument value outputing stream.
- It's add useful validation and shortcut for STDOUT.
- @returns {COA.Arg} this instance (for chainability)
- ###
- output: Opt::output
- _parse: (arg, args) ->
- @_saveVal(args, arg)
- _saveVal: Opt::_saveVal
- _checkParsed: (opts, args) -> not args.hasOwnProperty(@_name)
- _usage: ->
- res = []
- res.push Color('lpurple', @_name.toUpperCase()), ' : ', @_title
- if @_req then res.push ' ', Color('lred', '(required)')
- res.join ''
- _requiredText: -> 'Missing required argument:\n ' + @_usage()
- ###*
- Return rejected promise with error code.
- Use in .val() for return with error.
- @param {Object} reject reason
- You can customize toString() method and exitCode property
- of reason object.
- @returns {Q.promise} rejected promise
- ###
- reject: Cmd::reject
- ###*
- Finish chain for current option and return parent command instance.
- @returns {COA.Cmd} parent command
- ###
- end: Cmd::end
- ###*
- Apply function with arguments in context of arg instance.
- @param {Function} fn
- @param {Array} args
- @returns {COA.Arg} this instance (for chainability)
- ###
- apply: Cmd::apply
|