diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/output/generateBook.js | 12 | ||||
-rw-r--r-- | lib/plugins/listBlocks.js | 3 | ||||
-rw-r--r-- | lib/plugins/loadPlugin.js | 2 | ||||
-rw-r--r-- | lib/utils/fs.js | 17 |
4 files changed, 32 insertions, 2 deletions
diff --git a/lib/output/generateBook.js b/lib/output/generateBook.js index 6fcade0..f17997c 100644 --- a/lib/output/generateBook.js +++ b/lib/output/generateBook.js @@ -4,6 +4,7 @@ var Immutable = require('immutable'); var Output = require('../models/output'); var Config = require('../models/config'); var Promise = require('../utils/promise'); +var fs = require('../utils/fs'); var callHook = require('./callHook'); var preparePlugins = require('./preparePlugins'); @@ -164,6 +165,17 @@ function generateBook(generator, book, options) { generator: generator.name }) ) + + // Cleanup output folder + .then(function(output) { + var logger = output.getLogger(); + var rootFolder = output.getRoot(); + + logger.debug.ln('cleanup folder "' + rootFolder + '"'); + return fs.ensureFolder(rootFolder) + .thenResolve(output); + }) + .then(processOutput.bind(null, generator)) // Log duration and end message diff --git a/lib/plugins/listBlocks.js b/lib/plugins/listBlocks.js index f738937..3ac28af 100644 --- a/lib/plugins/listBlocks.js +++ b/lib/plugins/listBlocks.js @@ -10,7 +10,8 @@ function listBlocks(plugins) { return plugins .reverse() .reduce(function(result, plugin) { - return result.merge(plugin.getBlocks()); + var blocks = plugin.getBlocks(); + return result.merge(blocks); }, Immutable.Map()); } diff --git a/lib/plugins/loadPlugin.js b/lib/plugins/loadPlugin.js index 276d201..9ed83a1 100644 --- a/lib/plugins/loadPlugin.js +++ b/lib/plugins/loadPlugin.js @@ -73,7 +73,7 @@ function loadPlugin(book, plugin) { // Update plugin return plugin.merge({ 'package': Immutable.fromJS(packageContent), - 'content': Immutable.fromJS(content) + 'content': Immutable.fromJS(content || {}) }); }) diff --git a/lib/utils/fs.js b/lib/utils/fs.js index 3f97096..da22fdb 100644 --- a/lib/utils/fs.js +++ b/lib/utils/fs.js @@ -129,6 +129,22 @@ function pickFile(rootFolder, fileName) { return undefined; } +/** + Ensure that a directory exists and is empty + + @param {String} folder + @return {Promise} +*/ +function ensureFolder(rootFolder) { + return rmDir(rootFolder) + .fail(function() { + return Promise(); + }) + .then(function() { + return Promise.nfcall(mkdirp, rootFolder); + }); +} + module.exports = { exists: fileExists, existsSync: fs.existsSync, @@ -148,5 +164,6 @@ module.exports = { download: download, uniqueFilename: uniqueFilename, ensureFile: ensureFile, + ensureFolder: ensureFolder, rmDir: rmDir }; |