mavensmate
Version:
Core APIs that drive MavensMate IDEs for Salesforce1/Force.com
90 lines (84 loc) • 2.77 kB
JavaScript
/**
* @file Refreshes metadata from the server
* @author Joseph Ferraro <@joeferraro>
*/
;
var Promise = require('bluebird');
var path = require('path');
var util = require('../../util');
var inherits = require('inherits');
var BaseCommand = require('../../command');
var RefreshDelegate = require('../../refresh');
var EditorService = require('../../services/editor');
var logger = require('winston');
function Command() {
Command.super_.call(this, Array.prototype.slice.call(arguments, 0));
}
inherits(Command, BaseCommand);
Command.prototype.execute = function() {
var self = this;
return new Promise(function(resolve, reject) {
var project = self.getProject();
var paths = self.payload.paths;
var refreshPromise;
if (paths.length === 1 && (paths[0] === project.path || paths[0] === path.join(project.path, 'src'))) {
logger.debug('refreshing project from server ...');
refreshPromise = project.refreshFromServer();
} else {
logger.debug('refreshing paths from server ...');
var refreshDelegate = new RefreshDelegate(project, paths);
refreshPromise = refreshDelegate.execute();
}
refreshPromise
.then(function(result) {
logger.debug('refresh command result: ');
logger.debug(result);
if (self.editorService && self.editorService.editor === 'sublime') {
self.editorService.runCommand('refresh_folder_list')
.then(function() {
resolve();
})
.catch(function(err) {
logger.error(err);
resolve();
});
} else {
return Promise.resolve();
}
})
.then(function() {
resolve('Metadata successfully refreshed');
})
.catch(function(error) {
reject(error);
})
.done();
});
};
exports.command = Command;
exports.addSubCommand = function(program) {
program
.command('refresh-metadata [path]')
.alias('refresh')
.description('Refreshes metadata from the salesforce.com server')
.action(function(path){
if (path) {
program.commandExecutor.execute({
name: this._name,
body: {
paths : util.getAbsolutePaths( [ path ] )
}
});
} else {
var self = this;
util.getPayload()
.then(function(payload) {
program.commandExecutor.execute({
name: self._name,
body: payload,
editor: self.parent.editor
});
});
}
});
};