You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.1 KiB
59 lines
1.1 KiB
'use strict';
|
|
|
|
const
|
|
CoaParam = require('./coaparam'),
|
|
chalk = require('chalk');
|
|
|
|
/**
|
|
* Argument
|
|
*
|
|
* Unnamed entity. From command line arguments passed as list of unnamed values.
|
|
*
|
|
* @class Arg
|
|
* @extends CoaParam
|
|
*/
|
|
module.exports = class Arg extends CoaParam {
|
|
/**
|
|
* @constructs
|
|
* @param {COA.Cmd} cmd - parent command
|
|
*/
|
|
constructor(cmd) {
|
|
super(cmd);
|
|
|
|
this._cmd._args.push(this);
|
|
}
|
|
|
|
_saveVal(args, val) {
|
|
this._val && (val = this._val(val));
|
|
|
|
const name = this._name;
|
|
this._arr
|
|
? (args[name] || (args[name] = [])).push(val)
|
|
: (args[name] = val);
|
|
|
|
return val;
|
|
}
|
|
|
|
_parse(arg, args) {
|
|
return this._saveVal(args, arg);
|
|
}
|
|
|
|
_checkParsed(opts, args) {
|
|
return !args.hasOwnProperty(this._name);
|
|
}
|
|
|
|
_usage() {
|
|
const res = [];
|
|
|
|
res.push(chalk.magentaBright(this._name.toUpperCase()), ' : ', this._title);
|
|
|
|
this._req && res.push(' ', chalk.redBright('(required)'));
|
|
|
|
return res.join('');
|
|
}
|
|
|
|
_requiredText() {
|
|
return `Missing required argument:\n ${this._usage()}`;
|
|
}
|
|
};
|