embark-area-51/lib/core/plugins.js

55 lines
1.9 KiB
JavaScript
Raw Normal View History

2017-03-31 11:34:43 +00:00
var Plugin = require('./plugin.js');
var utils = require('../utils/utils.js');
var Plugins = function(options) {
this.pluginList = options.plugins || [];
this.interceptLogs = options.interceptLogs;
this.plugins = [];
// TODO: need backup 'NullLogger'
this.logger = options.logger;
this.events = options.events;
this.config = options.config;
2017-03-30 11:12:39 +00:00
};
2017-03-31 11:34:43 +00:00
Plugins.prototype.loadPlugins = function() {
var pluginConfig;
for (var pluginName in this.pluginList) {
pluginConfig = this.pluginList[pluginName];
this.loadPlugin(pluginName, pluginConfig);
}
2017-03-31 11:34:43 +00:00
};
2017-03-31 11:34:43 +00:00
Plugins.prototype.listPlugins = function() {
var list = [];
for (var className in this.pluginList) {
list.push(className);
2017-03-30 13:16:46 +00:00
}
2017-03-31 11:34:43 +00:00
return list;
};
2017-03-30 13:16:46 +00:00
2017-12-16 20:39:30 +00:00
Plugins.prototype.loadInternalPlugin = function(pluginName, pluginConfig) {
var pluginPath = utils.joinPath('../modules/', pluginName, 'index.js');
var plugin = require(pluginPath);
var pluginWrapper = new Plugin({name: pluginName, pluginModule: plugin, pluginConfig: pluginConfig, logger: this.logger, pluginPath: pluginPath, interceptLogs: this.interceptLogs, events: this.events, config: this.config, isInternal: true});
pluginWrapper.loadInternalPlugin();
this.plugins.push(pluginWrapper);
};
2017-03-31 11:34:43 +00:00
Plugins.prototype.loadPlugin = function(pluginName, pluginConfig) {
var pluginPath = utils.joinPath(process.env.PWD, 'node_modules', pluginName);
var plugin = require(pluginPath);
2017-12-16 20:39:30 +00:00
var pluginWrapper = new Plugin({name: pluginName, pluginModule: plugin, pluginConfig: pluginConfig, logger: this.logger, pluginPath: pluginPath, interceptLogs: this.interceptLogs, events: this.events, config: this.config, isInternal: false});
2017-03-31 11:34:43 +00:00
pluginWrapper.loadPlugin();
this.plugins.push(pluginWrapper);
};
2017-03-30 13:16:46 +00:00
2017-03-31 11:34:43 +00:00
Plugins.prototype.getPluginsFor = function(pluginType) {
return this.plugins.filter(function(plugin) {
return plugin.has(pluginType);
});
};
2017-03-31 11:34:43 +00:00
module.exports = Plugins;