| '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()}`; | 
|     } | 
| }; |