summaryrefslogtreecommitdiffstats
path: root/lib/generate/plugin.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-11-30 13:04:38 +0100
committerSamy Pessé <samypesse@gmail.com>2014-11-30 13:04:38 +0100
commited48f5f3eede0f55ddc5fc4a65b319ce4e3875d5 (patch)
tree0a52f9e0727b1a0798996ae97d711b9780f7d289 /lib/generate/plugin.js
parent7b4accb117d1e3dbd7b6853a7455d96b6fd0f352 (diff)
downloadgitbook-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.js26
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