clown
Version:
clown computing with pkgcloud
58 lines (44 loc) • 1.23 kB
JavaScript
var _ = require('lodash'),
pkgcloud = require('pkgcloud');
var log = require('./log');
var exports = module.exports = function createClient(argv) {
var resource = argv._[0];
if (!resource || !pkgcloud[resource] || !pkgcloud[resource].createClient) {
throw new Error('You need to specify a pkgcloud resource (eg. `compute`)');
}
var options = argv[resource] || {};
log.verbose('client', 'pkgcloud.%s.createClient(%j);', resource, scrub(options));
var client = pkgcloud[resource].createClient(options);
log.pkgcloud(client);
return client;
};
function scrub(options) {
return _.transform(options, function(acc, v, k) {
acc[k] = k === 'provider' ? v : '*****';
});
}
exports.available = function available() {
function asArray() {
var av = [];
Object.keys(pkgcloud).forEach(function (k) {
var v = pkgcloud[k];
if (k[0] !== '_' && v.createClient) {
av.push(k);
}
});
return av;
}
function toString() {
var av = asArray();
return (
'Available Resources:\n\n' + av.map(function (s) {
return ' * ' + s;
}).join('\n')
);
}
// Being an asshole.
return {
asArray: asArray,
toString: toString
};
}