diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-11-30 13:04:38 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-11-30 13:04:38 +0100 |
commit | ed48f5f3eede0f55ddc5fc4a65b319ce4e3875d5 (patch) | |
tree | 0a52f9e0727b1a0798996ae97d711b9780f7d289 /lib/generate/plugin.js | |
parent | 7b4accb117d1e3dbd7b6853a7455d96b6fd0f352 (diff) | |
download | gitbook-ed48f5f3eede0f55ddc5fc4a65b319ce4e3875d5.zip gitbook-ed48f5f3eede0f55ddc5fc4a65b319ce4e3875d5.tar.gz gitbook-ed48f5f3eede0f55ddc5fc4a65b319ce4e3875d5.tar.bz2 |
Add command "install" to install plugins from book.json
Diffstat (limited to 'lib/generate/plugin.js')
-rw-r--r-- | lib/generate/plugin.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/generate/plugin.js b/lib/generate/plugin.js index 9d740a5..373af14 100644 --- a/lib/generate/plugin.js +++ b/lib/generate/plugin.js @@ -4,6 +4,7 @@ var semver = require("semver"); var path = require("path"); var url = require("url"); var fs = require("./fs"); +var npmi = require('npmi'); var resolve = require('resolve'); var pkg = require("../../package.json"); @@ -152,6 +153,31 @@ Plugin.prototype.copyAssets = function(out, options) { }; +// Install a list of plugin +Plugin.install = function(options) { + // Normalize list of plugins + var plugins = Plugin.normalizeNames(options.plugins); + + // Remove defaults plugins + plugins = _.without.apply(null, [plugins].concat(Plugin.defaults)); + + return _.reduce(plugins, function(prev, name) { + return prev.then(function() { + var fullname = "gitbook-plugin-"+name; + console.log("Install plugin", name, "from npm ("+fullname+")"); + return Q.nfcall(npmi, { + 'name': fullname, + 'path': options.input, + 'npmLoad': { + 'loglevel': 'silent', + 'loaded': false, + 'prefix': options.input + } + }); + }); + }, Q()); +}; + // Normalize a list of plugin name to use Plugin.normalizeNames = function(names) { // Normalize list to an array |