diff options
Diffstat (limited to 'packages/gitbook/src/modifiers/config/togglePlugin.js')
-rw-r--r-- | packages/gitbook/src/modifiers/config/togglePlugin.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/gitbook/src/modifiers/config/togglePlugin.js b/packages/gitbook/src/modifiers/config/togglePlugin.js new file mode 100644 index 0000000..12a6dec --- /dev/null +++ b/packages/gitbook/src/modifiers/config/togglePlugin.js @@ -0,0 +1,31 @@ +const PluginDependency = require('../../models/pluginDependency'); +const hasPlugin = require('./hasPlugin'); +const isDefaultPlugin = require('./isDefaultPlugin'); + +/** + * Enable/disable a plugin dependency + * @param {Config} config + * @param {String} pluginName + * @param {Boolean} state (optional) + * @return {Config} + */ +function togglePlugin(config, pluginName, state) { + let deps = config.getPluginDependencies(); + + // For default plugin, we should ensure it's listed first + if (isDefaultPlugin(pluginName) && !hasPlugin(deps, pluginName)) { + deps = deps.push(PluginDependency.create(pluginName)); + } + + deps = deps.map(function(dep) { + if (dep.getName() === pluginName) { + return dep.toggle(state); + } + + return dep; + }); + + return config.setPluginDependencies(deps); +} + +module.exports = togglePlugin; |