summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/output/generateBook.js12
-rw-r--r--lib/plugins/listBlocks.js3
-rw-r--r--lib/plugins/loadPlugin.js2
-rw-r--r--lib/utils/fs.js17
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
};