Files

39 lines
1.2 KiB
JavaScript

import fs from 'fs';
import cli from './cli.js'
import config from '../config.js';
export default class pluginManager {
constructor(app, io, eventDispatcher) {
this.plugins = {};
this.dispatcher = eventDispatcher;
cli.info("Initializing plugins...");
this.load(app, io, eventDispatcher);
}
async load(app, io, eventDispatcher) {
for (const pluginName of config.plugins) {
try {
const pluginclass = await import("../plugins/" + pluginName + "/plugin.js");
const plugin = pluginclass.default;
let pluginInstance = new plugin(pluginName, app, io, eventDispatcher);
cli.info("" + pluginName, 'plugin');
this.plugins[pluginName] = pluginInstance;
} catch (err) {
cli.error(err, pluginName);
}
}
}
callMethod(method, params) {
this.dispatcher.emit("plugin." + method, params);
}
getDisplayAdditions() {
let additions = "";
for (let name in this.plugins) {
additions += this.plugins[name].setDisplayViewAdditions();
}
return additions;
}
}