123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- // Generated by CoffeeScript 1.6.3
- var Arg, Cmd, Color, Opt;
- 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 = Arg = (function() {
- /**
- @constructs
- @param {COA.Cmd} cmd parent command
- */
- function Arg(_cmd) {
- this._cmd = _cmd;
- this._cmd._args.push(this);
- }
- /**
- Set a canonical argument identifier to be used anywhere in text messages.
- @param {String} _name argument name
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.name = Opt.prototype.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)
- */
- Arg.prototype.title = Cmd.prototype.title;
- /**
- Makes an argument accepts multiple values.
- Otherwise, the value will be used by the latter passed.
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.arr = Opt.prototype.arr;
- /**
- Makes an argument required.
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.req = Opt.prototype.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)
- */
- Arg.prototype.val = Opt.prototype.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)
- */
- Arg.prototype.def = Opt.prototype.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)
- */
- Arg.prototype.comp = Cmd.prototype.comp;
- /**
- Make argument value inputting stream.
- It's add useful validation and shortcut for STDIN.
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.input = Opt.prototype.input;
- /**
- Make argument value outputing stream.
- It's add useful validation and shortcut for STDOUT.
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.output = Opt.prototype.output;
- Arg.prototype._parse = function(arg, args) {
- return this._saveVal(args, arg);
- };
- Arg.prototype._saveVal = Opt.prototype._saveVal;
- Arg.prototype._checkParsed = function(opts, args) {
- return !args.hasOwnProperty(this._name);
- };
- Arg.prototype._usage = function() {
- var res;
- res = [];
- res.push(Color('lpurple', this._name.toUpperCase()), ' : ', this._title);
- if (this._req) {
- res.push(' ', Color('lred', '(required)'));
- }
- return res.join('');
- };
- Arg.prototype._requiredText = function() {
- return 'Missing required argument:\n ' + this._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
- */
- Arg.prototype.reject = Cmd.prototype.reject;
- /**
- Finish chain for current option and return parent command instance.
- @returns {COA.Cmd} parent command
- */
- Arg.prototype.end = Cmd.prototype.end;
- /**
- Apply function with arguments in context of arg instance.
- @param {Function} fn
- @param {Array} args
- @returns {COA.Arg} this instance (for chainability)
- */
- Arg.prototype.apply = Cmd.prototype.apply;
- return Arg;
- })();
|