summaryrefslogtreecommitdiffstats
path: root/lib/plugins
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-04-26 15:23:28 +0200
committerSamy Pesse <samypesse@gmail.com>2016-04-26 15:23:28 +0200
commitfa17f1671685a97e88c84fdba6a94744c54a09b8 (patch)
tree63083c0645a1f88bc7e96d891ef9ec9509d7680a /lib/plugins
parentce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0 (diff)
downloadgitbook-fa17f1671685a97e88c84fdba6a94744c54a09b8.zip
gitbook-fa17f1671685a97e88c84fdba6a94744c54a09b8.tar.gz
gitbook-fa17f1671685a97e88c84fdba6a94744c54a09b8.tar.bz2
Add base for commands
Improve plugins installation
Diffstat (limited to 'lib/plugins')
-rw-r--r--lib/plugins/installPlugins.js35
-rw-r--r--lib/plugins/listAll.js4
2 files changed, 31 insertions, 8 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);
});
diff --git a/lib/plugins/listAll.js b/lib/plugins/listAll.js
index 46eaea0..8a0fc07 100644
--- a/lib/plugins/listAll.js
+++ b/lib/plugins/listAll.js
@@ -2,6 +2,7 @@ var is = require('is');
var Immutable = require('immutable');
var Plugin = require('../models/plugin');
+var pkg = require('../../package.json');
var DEFAULT_PLUGINS = require('../constants/defaultPlugins');
/**
@@ -41,7 +42,8 @@ function listAll(plugins) {
if (plugins.has(pluginName)) return;
plugins = plugins.set(pluginName, new Plugin({
- name: pluginName
+ name: pluginName,
+ version: pkg.dependencies[Plugin.nameToNpmID(pluginName)]
}));
});