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

47 lines
1.1 KiB
JavaScript

'use strict';
var utils = require('../utils');
module.exports = function(options) {
return function(app) {
this.define('getApp', function(name) {
return name !== 'base'
? this.base.updater(name)
: this.base;
});
this.define('run', function(args, cb) {
if (typeof args === 'function') {
cb = args;
args = null;
}
if (!args) {
var commands = this.options.commands || this.commands;
args = this.argv(this.base.get('argv'), commands);
}
if (args.commands && args.commands.length > 1) {
var cmd = '"' + args.commands.join(', ') + '"';
return cb(new Error('Error: only one root level command may be given: ' + cmd));
}
this.base.cli.process(args.flags);
var self = this;
utils.async.eachOf(args.updaters, function(tasks, name, next) {
var app = self.getApp(name);
tasks = tasks.filter(Boolean);
if (!tasks.length) return next();
self.emit('task', name, tasks);
app.build(tasks, next);
}, cb);
return this;
});
};
};