diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/modifiers/config/addPlugin.js | 14 | ||||
-rw-r--r-- | lib/modifiers/config/isDefaultPlugin.js | 15 | ||||
-rw-r--r-- | lib/modifiers/config/removePlugin.js | 8 |
3 files changed, 27 insertions, 10 deletions
diff --git a/lib/modifiers/config/addPlugin.js b/lib/modifiers/config/addPlugin.js index b495062..b8d4ea1 100644 --- a/lib/modifiers/config/addPlugin.js +++ b/lib/modifiers/config/addPlugin.js @@ -1,16 +1,22 @@ var PluginDependency = require('../../models/pluginDependency'); +var togglePlugin = require('./togglePlugin'); +var isDefaultPlugin = require('./isDefaultPlugin'); /** * Add a plugin to a book's configuration * @param {Config} config - * @param {String} plugin + * @param {String} pluginName * @param {String} version (optional) * @return {Config} */ -function addPlugin(config, plugin, version) { - var deps = config.getPluginDependencies(); +function addPlugin(config, pluginName, version) { + // For default plugin, we only ensure it is enabled + if (isDefaultPlugin(pluginName, version)) { + return togglePlugin(config, pluginName, true); + } - var dep = PluginDependency.create(plugin, version); + var deps = config.getPluginDependencies(); + var dep = PluginDependency.create(pluginName, version); deps = deps.push(dep); return config.setPluginDependencies(deps); diff --git a/lib/modifiers/config/isDefaultPlugin.js b/lib/modifiers/config/isDefaultPlugin.js new file mode 100644 index 0000000..e68874a --- /dev/null +++ b/lib/modifiers/config/isDefaultPlugin.js @@ -0,0 +1,15 @@ +var DEFAULT_PLUGINS = require('../../constants/defaultPlugins'); + +/** + * Test if a plugin is a default one + * @param {String} plugin + * @param {String} version + * @return {Boolean} + */ +function isDefaultPlugin(pluginName, version) { + return !!DEFAULT_PLUGINS.find(function(dep) { + return dep.getName() === pluginName && (!version || dep.getVersion() === version); + }); +} + +module.exports = isDefaultPlugin; diff --git a/lib/modifiers/config/removePlugin.js b/lib/modifiers/config/removePlugin.js index 123be0b..dd7c248 100644 --- a/lib/modifiers/config/removePlugin.js +++ b/lib/modifiers/config/removePlugin.js @@ -1,5 +1,5 @@ -var DEFAULT_PLUGINS = require('../../constants/defaultPlugins'); var togglePlugin = require('./togglePlugin'); +var isDefaultPlugin = require('./isDefaultPlugin'); /** * Remove a plugin from a book's configuration @@ -10,12 +10,8 @@ var togglePlugin = require('./togglePlugin'); function removePlugin(config, pluginName) { var deps = config.getPluginDependencies(); - var isDefault = DEFAULT_PLUGINS.find(function(dep) { - return dep.getName() === pluginName; - }); - // For default plugin, we have to disable it instead of removing from the list - if (isDefault) { + if (isDefaultPlugin(pluginName)) { return togglePlugin(config, pluginName, false); } |