summaryrefslogtreecommitdiffstats
path: root/lib/plugins/installPlugins.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/installPlugins.js')
-rw-r--r--lib/plugins/installPlugins.js35
1 files changed, 28 insertions, 7 deletions
diff --git a/lib/plugins/installPlugins.js b/lib/plugins/installPlugins.js
index 77ecfce..05a5316 100644
--- a/lib/plugins/installPlugins.js
+++ b/lib/plugins/installPlugins.js
@@ -3,9 +3,12 @@ var npmi = require('npmi');
var semver = require('semver');
var Immutable = require('immutable');
+var pkg = require('../../package.json');
+var DEFAULT_PLUGINS = require('../constants/defaultPlugins');
var Promise = require('../utils/promise');
var Plugin = require('../models/plugin');
var gitbook = require('../gitbook');
+var listForBook = require('./listForBook');
var npmIsReady;
@@ -42,7 +45,7 @@ function resolveVersion(plugin) {
return Promise.nfcall(npm.commands.view, [npmId + '@' + requiredVersion, 'engines'], true);
})
.then(function(versions) {
- versions = Immutable.Map(versions).entries().toList();
+ versions = Immutable.Map(versions).entrySeq();
var result = versions
.map(function(entry) {
@@ -62,7 +65,7 @@ function resolveVersion(plugin) {
if (!result) {
return undefined;
} else {
- return result.get('version');
+ return result.version;
}
});
}
@@ -82,7 +85,7 @@ function installPlugin(book, plugin) {
var name = plugin.getName();
var requirement = plugin.getVersion();
- logger.info.ln('installing plugin', name);
+ logger.info.ln('installing plugin "' + name + '"');
// Find a version to install
return resolveVersion(plugin)
@@ -91,7 +94,7 @@ function installPlugin(book, plugin) {
throw new Error('Found no satisfactory version for plugin "' + name + '" with requirement "' + requirement + '"');
}
- logger.info.ln('install plugin "' + plugin +'" from NPM with version', requirement);
+ logger.info.ln('install plugin "' + name +'" from NPM with version', requirement);
return Promise.nfcall(npmi, {
'name': plugin.getNpmID(),
'version': version,
@@ -104,7 +107,7 @@ function installPlugin(book, plugin) {
});
})
.then(function() {
- logger.info.ok('plugin "' + plugin + '" installed with success');
+ logger.info.ok('plugin "' + name + '" installed with success');
});
}
@@ -113,10 +116,28 @@ function installPlugin(book, plugin) {
Install plugin requirements for a book
@param {Book}
- @param {OrderedMap<String:Plugin>}
@return {Promise}
*/
-function installPlugins(book, plugins) {
+function installPlugins(book) {
+ var logger = book.getLogger();
+ var plugins = listForBook(book);
+
+ // 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()]
+ );
+ });
+
+ if (plugins.size == 0) {
+ logger.info.ln('nothing to install!');
+ return Promise();
+ }
+
+ logger.info.ln('installing', plugins.size, 'plugins');
+
return Promise.forEach(plugins, function(plugin) {
return installPlugin(book, plugin);
});