dmc
Version:
Cross-platform, developer cli tool for Salesforce
74 lines (58 loc) • 1.72 kB
JavaScript
var user = require('./user');
var logger = require('./logger');
var Promise = require('bluebird');
var config = require('./config');
var _ = require('lodash');
var fail = module.exports.fail = function(err) {
if(err) {
logger.error(err.message || err.errorMessage || err);
if(err.stack) logger.debug(err.stack);
}
logger.done(false);
process.exit(1);
};
var success = module.exports.success = function(msg) {
if(msg) logger.log(msg);
logger.done(true);
process.exit(0);
};
var callback = module.exports.callback = function(err) {
if(err) {
fail(err.message);
} else {
success();
}
};
var executeRun = module.exports.executeRun = function(cmd) {
return function() {
// opts will be the last argument
var opts = _.last(Array.prototype.slice.call(arguments));
var hasOrgArg;
if(opts || opts.options) {
hasOrgArg = opts._loadOrg || _.find(opts.options, function(o) {
return (o.long && o.long === '--org');
});
}
config.loadAll().then(function(){
if(!hasOrgArg) return;
var usingDefault = false;
if(!opts.org) {
usingDefault = true;
opts.org = config.get('default_org');
}
if(!opts.org) {
throw new Error('no org specified and no defined default org');
} else {
var defaultMsg = (usingDefault) ?
(' ' + logger.highlight('(default)')) :
'';
logger.log('using org: ' + opts.org + defaultMsg);
}
return user.getCredential(opts.org);
}).then(function(oauth) {
if(oauth) opts.oauth = oauth;
}).then(function() {
return Promise.promisify(cmd)(opts);
}).then(success).catch(fail);
};
};