diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-01-19 16:53:20 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-01-19 16:53:20 +0100 |
commit | ad233c0d8e242957288a9edb3a2f358e21a45a7d (patch) | |
tree | 4e1a910a23f9fce5807f5bfbee64f2b8bd468543 /lib/plugin.js | |
parent | 41c3db4c049c98f1a6fc5af9068757306ef26214 (diff) | |
download | gitbook-ad233c0d8e242957288a9edb3a2f358e21a45a7d.zip gitbook-ad233c0d8e242957288a9edb3a2f358e21a45a7d.tar.gz gitbook-ad233c0d8e242957288a9edb3a2f358e21a45a7d.tar.bz2 |
Improve plugins installation to prevent installation of default plugins
Diffstat (limited to 'lib/plugin.js')
-rw-r--r-- | lib/plugin.js | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/lib/plugin.js b/lib/plugin.js index d1ec08d..6767aed 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -4,7 +4,6 @@ var semver = require("semver"); var path = require("path"); var url = require("url"); var fs = require("./utils/fs"); -var npmi = require('npmi'); var resolve = require('resolve'); var pkg = require("../package.json"); @@ -31,9 +30,6 @@ var Plugin = function(book, name) { // Type of plugins resources Plugin.RESOURCES = ["js", "css"]; -// Default plugins added to each books -Plugin.defaults = ["mathjax"]; - // Load from a name Plugin.prototype.load = function(name, baseDir) { try { @@ -154,74 +150,4 @@ Plugin.prototype.copyAssets = function(out, options) { }, _.constant(false)); }; - -// Install a list of plugin -Plugin.install = function(root, plugins) { - // Normalize list of plugins - plugins = Plugin.normalizeList(plugins); - - // Install plugins one by one - return _.reduce(plugins, function(prev, plugin) { - return prev.then(function() { - var fullname = "gitbook-plugin-"+plugin.name; - console.log("Install plugin", plugin.name, "from npm ("+fullname+") with version", (plugin.version || "*")); - return Q.nfcall(npmi, { - 'name': fullname, - 'version': plugin.version, - 'path': root, - 'npmLoad': { - 'loglevel': 'silent', - 'loaded': false, - 'prefix': root - } - }); - }); - }, Q()); -}; - -// Normalize a list of plugins to use -Plugin.normalizeList = function(plugins) { - // Normalize list to an array - plugins = _.isString(plugins) ? plugins.split(",") : (plugins || []); - - // Divide as {name, version} to handle format like "myplugin@1.0.0" - plugins = _.map(plugins, function(plugin) { - var parts = plugin.split("@"); - return { - 'name': parts[0], - 'version': parts[1] // optional - } - }); - - // List plugins to remove - var toremove = _.chain(plugins) - .filter(function(plugin) { - return plugin.name.length > 0 && plugin.name[0] == "-"; - }) - .map(function(plugin) { - return plugin.name.slice(1); - }) - .value(); - - // Merge with defaults - plugins = _.chain(plugins) - .concat(_.map(Plugin.defaults, function(plugin) { - return { 'name': plugin } - })) - .uniq() - .value(); - - // Build final list - plugins = _.filter(plugins, function(plugin) { - return !_.contains(toremove, plugin.name) && !(plugin.name.length > 0 && plugin.name[0] == "-"); - }); - - return plugins; -}; - -// Normalize a list of plugin name to use -Plugin.normalizeNames = function(plugins) { - return _.pluck(Plugin.normalizeList(plugins), "name"); -}; - module.exports = Plugin; |