diff options
-rw-r--r-- | lib/output/website.js | 15 | ||||
-rw-r--r-- | lib/plugins/index.js | 17 | ||||
-rw-r--r-- | lib/plugins/plugin.js | 1 |
3 files changed, 32 insertions, 1 deletions
diff --git a/lib/output/website.js b/lib/output/website.js index 929c82f..30e0e8c 100644 --- a/lib/output/website.js +++ b/lib/output/website.js @@ -174,6 +174,21 @@ WebsiteOutput.prototype.onPage = function(page) { }); }; +// Finish generation, create ebook using ebook-convert +WebsiteOutput.prototype.finish = function() { + var that = this; + + return Promise() + .then(function() { + return WebsiteOutput.super_.prototype.finish.apply(that); + }) + + // Copy assets from plugins + .then(function() { + return that.plugins.copyResources('website', that.resolve('gitbook')); + }); +}; + // ----- Utilities ---- // Render a template using nunjucks diff --git a/lib/plugins/index.js b/lib/plugins/index.js index 00ee7d1..ed3aa0a 100644 --- a/lib/plugins/index.js +++ b/lib/plugins/index.js @@ -1,6 +1,8 @@ var _ = require('lodash'); +var path = require('path'); var Promise = require('../utils/promise'); +var fs = require('../utils/fs'); var BookPlugin = require('./plugin'); var registry = require('./registry'); @@ -109,4 +111,19 @@ PluginsManager.prototype.resources = function(namespace) { }; +// Copy all resources for a plugin +PluginsManager.prototype.copyResources = function(namespace, outputRoot) { + return Promise.serie(this.plugins, function(plugin) { + return plugin.getResources(namespace) + .then(function(resources) { + if (!resources.assets) return; + + var input = path.resolve(plugin.root, resources.assets); + var output = path.resolve(outputRoot, plugin.npmId); + + return fs.copyDir(input, output); + }); + }); +}; + module.exports = PluginsManager; diff --git a/lib/plugins/plugin.js b/lib/plugins/plugin.js index 0d69cd9..094c82d 100644 --- a/lib/plugins/plugin.js +++ b/lib/plugins/plugin.js @@ -237,7 +237,6 @@ BookPlugin.prototype.getResources = function(base) { return this._getResources(base) .then(function(resources) { - _.each(RESOURCES, function(resourceType) { resources[resourceType] = _.map(resources[resourceType] || [], that.normalizeResource); }); |