summaryrefslogtreecommitdiffstats
path: root/lib/plugins/listDependencies.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/listDependencies.js')
-rw-r--r--lib/plugins/listDependencies.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/plugins/listDependencies.js b/lib/plugins/listDependencies.js
new file mode 100644
index 0000000..d52eaa9
--- /dev/null
+++ b/lib/plugins/listDependencies.js
@@ -0,0 +1,33 @@
+var DEFAULT_PLUGINS = require('../constants/defaultPlugins');
+var sortDependencies = require('./sortDependencies');
+
+/**
+ * List all dependencies for a book, including default plugins.
+ * It returns a concat with default plugins and remove disabled ones.
+ *
+ * @param {List<PluginDependency>} deps
+ * @return {List<PluginDependency>}
+ */
+function listDependencies(deps) {
+ // Extract list of plugins to disable (starting with -)
+ var toRemove = deps
+ .filter(function(plugin) {
+ return !plugin.isEnabled();
+ })
+ .map(function(plugin) {
+ return plugin.getName();
+ });
+
+ // Concat with default plugins
+ deps = deps.concat(DEFAULT_PLUGINS);
+
+ // Remove plugins
+ deps = deps.filterNot(function(plugin) {
+ return toRemove.includes(plugin.getName());
+ });
+
+ // Sort
+ return sortDependencies(deps);
+}
+
+module.exports = listDependencies;