summaryrefslogtreecommitdiffstats
path: root/lib/cli/helper.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cli/helper.js')
-rw-r--r--lib/cli/helper.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/cli/helper.js b/lib/cli/helper.js
index 6dae58c..9510b49 100644
--- a/lib/cli/helper.js
+++ b/lib/cli/helper.js
@@ -4,6 +4,7 @@ var path = require('path');
var Book = require('../book');
var NodeFS = require('../fs/node');
var Logger = require('../utils/logger');
+var fs = require('../utils/fs');
var JSONOutput = require('../output/json');
var WebsiteOutput = require('../output/website');
var EBookOutput = require('../output/ebook');
@@ -57,9 +58,45 @@ function outputCmd(fn) {
});
}
+// Command to generate an ebook
+function ebookCmd(format) {
+ return {
+ name: format + ' [book] [output] [file]',
+ description: 'generates ebook '+format,
+ options: [
+ LOG_OPTION
+ ],
+ exec: bookCmd(function(book, args, kwargs) {
+ return fs.tmpDir()
+ .then(function(dir) {
+ var outputFile = path.resolve(process.cwd(), args[1] || 'book.' + format);
+ var output = new EBookOutput(book, {
+ format: format
+ });
+
+ return output.book.parse()
+ .then(function() {
+ // Set output folder
+ output.book.config.set('output', dir);
+ return output.generate();
+ })
+
+ // Copy the ebook file
+ .then(function() {
+ return fs.copy(
+ path.resolve(dir, 'index.' + format),
+ outputFile
+ );
+ });
+ });
+ })
+ };
+}
+
module.exports = {
bookCmd: bookCmd,
outputCmd: outputCmd,
+ ebookCmd: ebookCmd,
options: {
log: LOG_OPTION,