diff options
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 |