Merge pull request +6932 from c9/sdk-pkg

Fix plugin loading
pull/85/head
Harutyun Amirjanyan 2015-04-17 21:42:24 +04:00
commit e69a78dd40
1 zmienionych plików z 23 dodań i 22 usunięć

Wyświetl plik

@ -116,18 +116,19 @@ define(function(require, exports, module) {
} }
var config = []; var config = [];
var count = list.length; var loadConfig = function(){
architect.loadAdditionalPlugins(config, function(err){
if (err) console.error(err);
});
};
function next(name){ async.each(list, function(name, next){
if (!name) {
if (--count === 0) finish();
return;
}
var resourceHolder = new Plugin(); var resourceHolder = new Plugin();
var resourceVersion = ""; var resourceVersion = "";
resourceHolder.on("load", function(){ load(); }); resourceHolder.on("load", function(){
if (inited) load();
});
resourceHolder.freezePublicAPI({ resourceHolder.freezePublicAPI({
get version(){ return resourceVersion }, get version(){ return resourceVersion },
@ -156,9 +157,11 @@ define(function(require, exports, module) {
var base = join(String(c9.projectId), var base = join(String(c9.projectId),
"plugins", auth.accessToken); "plugins", auth.accessToken);
// Configure Require.js
var pathConfig = {}; var pathConfig = {};
pathConfig["plugins/" + name] = host + join(base, name); pathConfig["plugins/" + name] = host + join(base, name);
requirejs.config({ paths: pathConfig });
// Add the plugin to the config // Add the plugin to the config
Object.keys(options.plugins).forEach(function(path){ Object.keys(options.plugins).forEach(function(path){
var pluginPath = name + "/" + path; var pluginPath = name + "/" + path;
@ -173,8 +176,7 @@ define(function(require, exports, module) {
config.push(cfg); config.push(cfg);
}); });
requirejs.config({paths: pathConfig}); // Set version for package manager
resourceHolder.version = options.version; resourceHolder.version = options.version;
// Start the installer if one is included // Start the installer if one is included
@ -226,28 +228,27 @@ define(function(require, exports, module) {
} }
}); });
} }
load(); load();
} }, function(){
function finish(){
if (!config.length) return; if (!config.length) return;
// Load config // Load config
if (installer.sessions.length) { if (installer.sessions.length) {
installer.on("stop", function(err){ installer.on("stop", function listen(err){
if (err) if (err)
return console.error(err); return console.error(err);
finish();
if (!installer.sessions.length) {
loadConfig();
installer.off("stop", listen);
}
}); });
return; return;
} }
architect.loadAdditionalPlugins(config, function(err){ loadConfig();
if (err) console.error(err); });
});
}
list.forEach(next);
} }
function processModules(path, data, plugin){ function processModules(path, data, plugin){