diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-12-22 10:18:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-22 10:18:38 +0100 |
commit | 194ebc3da9641ff96f083f9d8ab43c2d27944f9a (patch) | |
tree | c50988f32ccf18df93ae7ab40be78e9459642818 /packages/gitbook/src/plugins/installPlugin.js | |
parent | 64ccb6b00b4b63fa0e516d4e35351275b34f8c07 (diff) | |
parent | 16af264360e48e8a833e9efa9ab8d194574dbc70 (diff) | |
download | gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.zip gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.gz gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.bz2 |
Merge pull request #1543 from GitbookIO/dream
React for rendering website with plugins
Diffstat (limited to 'packages/gitbook/src/plugins/installPlugin.js')
-rw-r--r-- | packages/gitbook/src/plugins/installPlugin.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/gitbook/src/plugins/installPlugin.js b/packages/gitbook/src/plugins/installPlugin.js new file mode 100644 index 0000000..9834d05 --- /dev/null +++ b/packages/gitbook/src/plugins/installPlugin.js @@ -0,0 +1,44 @@ +const resolve = require('resolve'); + +const { exec } = require('../utils/command'); +const resolveVersion = require('./resolveVersion'); + +/** + * Install a plugin for a book + * + * @param {Book} book + * @param {PluginDependency} plugin + * @return {Promise} + */ +function installPlugin(book, plugin) { + const logger = book.getLogger(); + + const installFolder = book.getRoot(); + const name = plugin.getName(); + const requirement = plugin.getVersion(); + + logger.info.ln(''); + logger.info.ln('installing plugin "' + name + '"'); + + const installerBin = resolve.sync('ied/lib/cmd.js'); + + // Find a version to install + return resolveVersion(plugin) + .then(function(version) { + if (!version) { + throw new Error('Found no satisfactory version for plugin "' + name + '" with requirement "' + requirement + '"'); + } + + logger.info.ln('install plugin "' + name + '" (' + requirement + ') with version', version); + + const npmID = plugin.getNpmID(); + const command = `${installerBin} install ${npmID}@${version}`; + + return exec(command, { cwd: installFolder }); + }) + .then(function() { + logger.info.ok('plugin "' + name + '" installed with success'); + }); +} + +module.exports = installPlugin; |