diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-26 15:23:28 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-26 15:23:28 +0200 |
commit | fa17f1671685a97e88c84fdba6a94744c54a09b8 (patch) | |
tree | 63083c0645a1f88bc7e96d891ef9ec9509d7680a /lib/plugins | |
parent | ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0 (diff) | |
download | gitbook-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.js | 35 | ||||
-rw-r--r-- | lib/plugins/listAll.js | 4 |
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)] })); }); |