gentelella/vendors/update/lib/runner/argv.js

56 lines
1.3 KiB
JavaScript

'use strict';
var utils = require('../utils');
module.exports = function(options) {
return function(app) {
this.define('argv', function(argv, commands, fn) {
var args = {};
args.argv = argv;
args.commands = [];
args.updaters = {};
args.flags = utils.expandArgs(utils.omit(argv, ['_', 'files']));
args.flagskeys = Object.keys(args.flags);
var files = argv.files ? utils.pick(argv, 'files') : null;
if (files) args.flags.files = files;
var arr = argv._;
var len = arr.length, i = -1;
while (++i < len) {
var key = arr[i];
if (/\W/.test(key)) {
var obj = utils.expand(key);
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var val = obj[prop];
utils.union(args, 'updaters.' + prop, val);
}
}
continue;
}
if (utils.contains(commands, key)) {
args.commands.push(key);
continue;
}
// fn(key, args);
var updaters = this.base.updaters;
if (key in updaters) {
utils.union(args, 'updaters.' + key, 'default');
} else if (key !== 'base') {
utils.union(args, 'updaters.base', key);
}
}
return args;
});
};
};