Check that plugin dependencies exist

This commit is contained in:
Jiiks 2018-02-14 09:56:55 +02:00
parent 4329517b0f
commit 4fba4049e1
1 changed files with 17 additions and 2 deletions

View File

@ -9,6 +9,7 @@
*/ */
import ContentManager from './contentmanager'; import ContentManager from './contentmanager';
import ExtModuleManager from './extmodulemanager';
import Plugin from './plugin'; import Plugin from './plugin';
import PluginApi from './pluginapi'; import PluginApi from './pluginapi';
import Vendor from './vendor'; import Vendor from './vendor';
@ -44,8 +45,22 @@ export default class extends ContentManager {
static get refreshPlugins() { return this.refreshContent } static get refreshPlugins() { return this.refreshContent }
static get loadContent() { return this.loadPlugin } static get loadContent() { return this.loadPlugin }
static async loadPlugin(paths, configs, info, main) { static async loadPlugin(paths, configs, info, main, dependencies) {
const plugin = window.require(paths.mainPath)(Plugin, new PluginApi(info), Vendor);
const deps = [];
if (dependencies) {
for (const [key, value] of Object.entries(dependencies)) {
const extModule = ExtModuleManager.findModule(key);
if (!extModule) {
throw {
'message': `Dependency: ${key}:${value} is not loaded`
};
}
deps.push(extModule);
}
}
const plugin = window.require(paths.mainPath)(Plugin, new PluginApi(info), Vendor, deps);
const instance = new plugin({ configs, info, main, paths: { contentPath: paths.contentPath, dirName: paths.dirName, mainPath: paths.mainPath } }); const instance = new plugin({ configs, info, main, paths: { contentPath: paths.contentPath, dirName: paths.dirName, mainPath: paths.mainPath } });
return instance; return instance;
} }