mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
var npmi = require('npmi');
|
|
|
|
var Promise = require('../utils/promise');
|
|
var resolveVersion = require('./resolveVersion');
|
|
|
|
/**
|
|
Install a plugin for a book
|
|
|
|
@param {Book}
|
|
@param {PluginDependency}
|
|
@return {Promise}
|
|
*/
|
|
function installPlugin(book, plugin) {
|
|
var logger = book.getLogger();
|
|
|
|
var installFolder = book.getRoot();
|
|
var name = plugin.getName();
|
|
var requirement = plugin.getVersion();
|
|
|
|
logger.info.ln('');
|
|
logger.info.ln('installing plugin "' + name + '"');
|
|
|
|
// 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 + ') from NPM with version', version);
|
|
return Promise.nfcall(npmi, {
|
|
'name': plugin.getNpmID(),
|
|
'version': version,
|
|
'path': installFolder,
|
|
'npmLoad': {
|
|
'loglevel': 'silent',
|
|
'loaded': true,
|
|
'prefix': installFolder
|
|
}
|
|
});
|
|
})
|
|
.then(function() {
|
|
logger.info.ok('plugin "' + name + '" installed with success');
|
|
});
|
|
}
|
|
|
|
module.exports = installPlugin;
|