diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/coa/lib/arg.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/coa/lib/arg.js')
| -rw-r--r-- | node_modules/coa/lib/arg.js | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/node_modules/coa/lib/arg.js b/node_modules/coa/lib/arg.js new file mode 100644 index 00000000..4444a8a5 --- /dev/null +++ b/node_modules/coa/lib/arg.js @@ -0,0 +1,175 @@ +// 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; + +})(); |
