clown
Version:
clown computing with pkgcloud
53 lines (42 loc) • 1.25 kB
JavaScript
var _ = require('lodash');
var log = require('./log'),
params = require('./params');
var command = module.exports = function(method, signature) {
var clientKeys = '_events,newListener,_conf,delimiter,wildcard,listenerTree,config,protocol,before,event,client'.split(',');
return function(argv, client, cb) {
params({ method: method, signature: signature }, argv, function(err, args) {
if (err) return cb(err);
log.verbose.call(log,
'command',
'client.%s(' + args.map(function(a) {
return JSON.stringify(a);
}).concat('[callback]') + ');',
method
);
args.push(function(err, res) {
if (err) return cb(err);
cb(null, res.map ? res.map(scrub) : scrub(res));
});
client[method].apply(client, args);
});
};
function scrub(obj) {
var clean = _.transform(obj, function(acc, v, k) {
if (clientKeys.indexOf(k) === -1) {
acc[k] = v;
}
});
return clean;
};
};
command.help = function() {
var argv = [].slice.call(arguments);
return function(_, _, cb) {
argv.forEach(function(ls) {
ls.split('\n').forEach(function(l) {
log.help('😄 ', l);
});
});
cb();
};
};