gear-cli
Version:
Adds CLI to Gearbox
52 lines (35 loc) • 1.29 kB
JavaScript
var _ = require('underscore');
var parse = require('./lib/parseArgs');
var sprintf = require('sprintf-js').sprintf;
module.exports = function(prototype) {
prototype._parseArgs = function _parse (args) {
return parse (args, this.gearbox, this.debug, this.commands);
};
prototype.run = function run (args, callback) {
var parsed = this._parseArgs(args);
this.gearbox.getGear(parsed.gear.name, {}, function(err, gear) {
if (err) {
callback(err);
}
else {
var methodName = parsed.gear.method;
if ( _.isFunction(gear[methodName])) {
var f = gear[methodName];
f = _.bind(f, gear);
f (parsed.args, callback);
}
else {
callback (
{
name: 'badCliFunction',
message:
sprintf("Cannot run command (cannot find '%s' function on '%s' gear)",
methodName,
parsed.gear.name)
}
);
}
}
});
};
};