kopia lustrzana https://github.com/c9/core
load standalone plugins from __packed__
rodzic
003aea3d49
commit
a3edfaf181
|
@ -82,7 +82,8 @@ module.exports = function(options) {
|
||||||
"plugins/c9.core/util",
|
"plugins/c9.core/util",
|
||||||
{
|
{
|
||||||
packagePath: "plugins/c9.ide.plugins/loader",
|
packagePath: "plugins/c9.ide.plugins/loader",
|
||||||
plugins: options.plugins || []
|
plugins: options.plugins || [],
|
||||||
|
loadFromDisk: options.standalone
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
packagePath: "plugins/c9.ide.plugins/installer",
|
packagePath: "plugins/c9.ide.plugins/installer",
|
||||||
|
|
|
@ -151,6 +151,7 @@ var activateModule = function(name) {
|
||||||
return _require(name, path, callback);
|
return _require(name, path, callback);
|
||||||
};
|
};
|
||||||
req.toUrl = require.toUrl;
|
req.toUrl = require.toUrl;
|
||||||
|
req.config = require.config;
|
||||||
|
|
||||||
var modules = define.modules;
|
var modules = define.modules;
|
||||||
var missing = checkMissing(module.deps);
|
var missing = checkMissing(module.deps);
|
||||||
|
@ -253,6 +254,7 @@ var require = function(module, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var config = require.config = function(cfg) {
|
var config = require.config = function(cfg) {
|
||||||
|
if (cfg.baseUrl)
|
||||||
config.baseUrl = cfg.baseUrl.replace(/\/*$/, "/");
|
config.baseUrl = cfg.baseUrl.replace(/\/*$/, "/");
|
||||||
|
|
||||||
cfg.packages && cfg.packages.forEach(function(pkg) {
|
cfg.packages && cfg.packages.forEach(function(pkg) {
|
||||||
|
|
|
@ -80,6 +80,10 @@ module.exports = function(mains, opts) {
|
||||||
|
|
||||||
opts.modules[id] = mod;
|
opts.modules[id] = mod;
|
||||||
|
|
||||||
|
if (mod.source && mod.literal) {
|
||||||
|
return cb(null, mod);
|
||||||
|
}
|
||||||
|
|
||||||
idToPath(mod, function(err, path) {
|
idToPath(mod, function(err, path) {
|
||||||
var filepath = absolutePath(root, path);
|
var filepath = absolutePath(root, path);
|
||||||
mod.path = path;
|
mod.path = path;
|
||||||
|
|
|
@ -454,7 +454,6 @@ define(function(require, exports, module) {
|
||||||
async.series([
|
async.series([
|
||||||
function(next) {
|
function(next) {
|
||||||
fs.readdir(cwd, function(err, files) {
|
fs.readdir(cwd, function(err, files) {
|
||||||
console.log(files)
|
|
||||||
if (err)
|
if (err)
|
||||||
return next();
|
return next();
|
||||||
var extraCode = [];
|
var extraCode = [];
|
||||||
|
@ -600,8 +599,23 @@ define(function(require, exports, module) {
|
||||||
var paths = {};
|
var paths = {};
|
||||||
paths["plugins/" + packageName] = cwd;
|
paths["plugins/" + packageName] = cwd;
|
||||||
|
|
||||||
|
var additional = [];
|
||||||
|
var packedConfig = Object.keys(config);
|
||||||
|
if (staticPlugin) {
|
||||||
|
additional.push(staticPlugin);
|
||||||
|
packedConfig.push(staticPlugin.id);
|
||||||
|
}
|
||||||
|
var path = "plugins/" + packageName + "/__packed__";
|
||||||
|
additional.push({
|
||||||
|
id: path,
|
||||||
|
source: 'define("' + path + '", [],' +
|
||||||
|
JSON.stringify(config.concat(), null, 4) + ')',
|
||||||
|
literal : true,
|
||||||
|
order: -1
|
||||||
|
});
|
||||||
|
|
||||||
build(config, {
|
build(config, {
|
||||||
additional: staticPlugin ? [staticPlugin] : [],
|
additional: additional,
|
||||||
paths: paths,
|
paths: paths,
|
||||||
enableBrowser: true,
|
enableBrowser: true,
|
||||||
includeConfig: false,
|
includeConfig: false,
|
||||||
|
@ -617,7 +631,7 @@ define(function(require, exports, module) {
|
||||||
}, function(e, r) {
|
}, function(e, r) {
|
||||||
result = r;
|
result = r;
|
||||||
result.sources.forEach(function(m) {
|
result.sources.forEach(function(m) {
|
||||||
packedFiles.push(m.file);
|
m.file && packedFiles.push(m.file);
|
||||||
});
|
});
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
@ -626,7 +640,7 @@ define(function(require, exports, module) {
|
||||||
fs.writeFile("__packed__.js", result.code, "utf8", next);
|
fs.writeFile("__packed__.js", result.code, "utf8", next);
|
||||||
},
|
},
|
||||||
function(next) {
|
function(next) {
|
||||||
console.log(packedFiles)
|
// console.log(packedFiles)
|
||||||
zip(packedFiles);
|
zip(packedFiles);
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -26,6 +26,7 @@ define(function(require, exports, module) {
|
||||||
var HASSDK = c9.location.indexOf("sdk=0") === -1;
|
var HASSDK = c9.location.indexOf("sdk=0") === -1;
|
||||||
|
|
||||||
var plugins = options.plugins;
|
var plugins = options.plugins;
|
||||||
|
var loadFromDisk = options.loadFromDisk
|
||||||
var names = [];
|
var names = [];
|
||||||
|
|
||||||
var loaded = false;
|
var loaded = false;
|
||||||
|
@ -36,18 +37,6 @@ define(function(require, exports, module) {
|
||||||
if (!HASSDK) return;
|
if (!HASSDK) return;
|
||||||
if (!ENABLED) return;
|
if (!ENABLED) return;
|
||||||
|
|
||||||
for (var i = 0; i < plugins.length; i++) {
|
|
||||||
try {
|
|
||||||
if (plugins[i].setup)
|
|
||||||
plugins[i].setup = window.eval(plugins[i].setup);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
console.error("Could not load plugin from cache: " + plugins[i].name);
|
|
||||||
delete plugins[i].setup;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
loadPlugins(plugins);
|
loadPlugins(plugins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,47 +49,81 @@ define(function(require, exports, module) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var wait = 0;
|
var wait = 0;
|
||||||
|
|
||||||
config.forEach(function(options){
|
|
||||||
var name = options.packagePath.replace(/^plugins\/([^\/]*?)\/.*$/, "$1");
|
|
||||||
names.push(name);
|
|
||||||
|
|
||||||
var path = options.packagePath + ".js";
|
|
||||||
var host = vfs.baseUrl + "/";
|
var host = vfs.baseUrl + "/";
|
||||||
var base = join(String(c9.projectId), "plugins", auth.accessToken);
|
var base = join(String(c9.projectId), "plugins", auth.accessToken);
|
||||||
|
|
||||||
options.packagePath = host + join(base, path.replace(/^plugins\//, ""));
|
if (loadFromDisk) {
|
||||||
options.staticPrefix = host + join(base, name);
|
fs.readdir("~/.c9/plugins", function(error, files){
|
||||||
|
files.forEach(function(f) {
|
||||||
|
loadOne({
|
||||||
|
packageName: f.name,
|
||||||
|
}, false);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (!options.setup) {
|
config.forEach(function(options){
|
||||||
|
// var name = options.packagePath.replace(/^plugins\/([^\/]*?)\/.*$/, "$1");
|
||||||
|
// names.push(name);
|
||||||
|
|
||||||
|
// var path = options.packagePath + ".js";
|
||||||
|
|
||||||
|
// options.packagePath = host + join(base, path.replace(/^plugins\//, ""));
|
||||||
|
|
||||||
|
|
||||||
|
// if (!options.setup) {
|
||||||
|
// wait++;
|
||||||
|
|
||||||
|
// var install = [];
|
||||||
|
// fs.exists("~/.c9/" + path, function(exists){
|
||||||
|
// if (!exists) {
|
||||||
|
// install.push(options);
|
||||||
|
// names.remove(name);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (!--wait)
|
||||||
|
// done(install);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
|
||||||
|
function loadOne(packageConfig, forceInstall) {
|
||||||
wait++;
|
wait++;
|
||||||
|
|
||||||
var install = [];
|
var packageName = packageConfig.packageName;
|
||||||
fs.exists("~/.c9/" + path, function(exists){
|
var root = "plugins/" + packageName;
|
||||||
if (!exists) {
|
var paths = {};
|
||||||
install.push(options);
|
paths[root] = host + base + "/" + root;
|
||||||
names.remove(name);
|
requirejs.config({paths: paths});
|
||||||
}
|
require.undef(root + "/__packed__.js");
|
||||||
|
require([root + "/__packed__.js"], function(plugins) {
|
||||||
if (!--wait)
|
var config = plugins.map(function(p) {
|
||||||
done(install);
|
return {
|
||||||
});
|
staticPrefix: host + join(base, name),
|
||||||
}
|
packagePath: p
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!wait)
|
|
||||||
done([]);
|
|
||||||
|
|
||||||
function done(install){
|
|
||||||
if (install.length)
|
|
||||||
installer.installPlugins(install, function(err){
|
|
||||||
if (err) console.error(err);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (names.length)
|
|
||||||
architect.loadAdditionalPlugins(config, function(err){
|
architect.loadAdditionalPlugins(config, function(err){
|
||||||
if (err) console.error(err);
|
if (err) console.error(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
}, function(err) {
|
||||||
|
if (forceInstall) {
|
||||||
|
install.push(packageName)
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function done(){
|
||||||
|
if (!--wait) return;
|
||||||
|
if (install.length) {
|
||||||
|
installer.installPlugins(install, function(err){
|
||||||
|
if (err) console.error(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue