diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-05-27 09:38:23 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-05-27 09:38:23 +0200 |
commit | b33a79704b686405e0730ff1baa61281c89b3c08 (patch) | |
tree | 8518dd382eab709c1c86c0033ba7e82b864a8dfb | |
parent | 6def174b845d6dd392c2f1ef41e94b025b774bf8 (diff) | |
download | gitbook-b33a79704b686405e0730ff1baa61281c89b3c08.zip gitbook-b33a79704b686405e0730ff1baa61281c89b3c08.tar.gz gitbook-b33a79704b686405e0730ff1baa61281c89b3c08.tar.bz2 |
Switch plugin installation and resolveVersion to use PluginDependency instead of Plugin
-rw-r--r-- | lib/models/pluginDependency.js | 10 | ||||
-rw-r--r-- | lib/plugins/installPlugins.js | 19 | ||||
-rw-r--r-- | lib/plugins/resolveVersion.js | 6 |
3 files changed, 25 insertions, 10 deletions
diff --git a/lib/models/pluginDependency.js b/lib/models/pluginDependency.js index 99f6f91..e5deef0 100644 --- a/lib/models/pluginDependency.js +++ b/lib/models/pluginDependency.js @@ -1,4 +1,5 @@ var is = require('is'); +var semver = require('semver'); var Immutable = require('immutable'); var DEFAULT_VERSION = '*'; @@ -30,6 +31,15 @@ PluginDependency.prototype.isEnabled = function() { }; /** + Is the plugin using a git dependency + + @return {Boolean} +*/ +PluginDependency.prototype.isGitDependency = function() { + return !semver.validRange(this.getVersion()); +}; + +/** Create a plugin with a name and a plugin @param {String} diff --git a/lib/plugins/installPlugins.js b/lib/plugins/installPlugins.js index ed9316c..3137a0a 100644 --- a/lib/plugins/installPlugins.js +++ b/lib/plugins/installPlugins.js @@ -3,14 +3,13 @@ var npmi = require('npmi'); var pkg = require('../../package.json'); var DEFAULT_PLUGINS = require('../constants/defaultPlugins'); var Promise = require('../utils/promise'); -var listForBook = require('./listForBook'); var resolveVersion = require('./resolveVersion'); /** Install a plugin for a book @param {Book} - @param {Plugin} + @param {PluginDependency} @return {Promise} */ function installPlugin(book, plugin) { @@ -52,18 +51,23 @@ function installPlugin(book, plugin) { Install plugin requirements for a book @param {Book} - @return {Promise} + @return {Promise<Number>} */ function installPlugins(book) { var logger = book.getLogger(); - var plugins = listForBook(book); + var config = book.getConfig(); + var plugins = config.getPluginDependencies(); // Remove default plugins // (only if version is same as installed) plugins = plugins.filterNot(function(plugin) { return ( - DEFAULT_PLUGINS.includes(plugin.getName()) && - plugin.getVersion() === pkg.dependencies[plugin.getNpmID()] + // Disabled plugin + !plugin.isEnabled() || + + // Or default one installed in GitBook itself + (DEFAULT_PLUGINS.includes(plugin.getName()) && + plugin.getVersion() === pkg.dependencies[plugin.getNpmID()]) ); }); @@ -76,7 +80,8 @@ function installPlugins(book) { return Promise.forEach(plugins, function(plugin) { return installPlugin(book, plugin); - }); + }) + .thenResolve(plugins.size); } module.exports = installPlugins; diff --git a/lib/plugins/resolveVersion.js b/lib/plugins/resolveVersion.js index a24c8a0..61aef8d 100644 --- a/lib/plugins/resolveVersion.js +++ b/lib/plugins/resolveVersion.js @@ -25,16 +25,16 @@ function initNPM() { } /** - Resolve a plugin to a version + Resolve a plugin dependency to a version - @param {Plugin} + @param {PluginDependency} plugin @return {Promise<String>} */ function resolveVersion(plugin) { var npmId = Plugin.nameToNpmID(plugin.getName()); var requiredVersion = plugin.getVersion(); - if (!semver.validRange(requiredVersion)) { + if (plugin.isGitDependency()) { return Promise.resolve(requiredVersion); } |