summaryrefslogtreecommitdiffstats
path: root/lib/cli
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-02-21 18:33:07 +0100
committerSamy Pessé <samypesse@gmail.com>2016-02-21 18:33:07 +0100
commit7b2e332f6c0f3b3fa3e278bb82585bdd4e2deb0b (patch)
treefc8e301fdeb18d96a95bc26e0c833316f90edec8 /lib/cli
parentab541c165366feeebda10e1b5dfce42ba1b5db3f (diff)
downloadgitbook-7b2e332f6c0f3b3fa3e278bb82585bdd4e2deb0b.zip
gitbook-7b2e332f6c0f3b3fa3e278bb82585bdd4e2deb0b.tar.gz
gitbook-7b2e332f6c0f3b3fa3e278bb82585bdd4e2deb0b.tar.bz2
Complete ebook command to output one file
Diffstat (limited to 'lib/cli')
-rw-r--r--lib/cli/helper.js37
-rw-r--r--lib/cli/index.js33
2 files changed, 40 insertions, 30 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,
diff --git a/lib/cli/index.js b/lib/cli/index.js
index 448ea01..78c5286 100644
--- a/lib/cli/index.js
+++ b/lib/cli/index.js
@@ -7,38 +7,11 @@ var Promise = require('../utils/promise');
var PluginsManager = require('../plugins');
var Book = require('../book');
var NodeFS = require('../fs/node');
-var EBookOutput = require('../output/ebook');
var helper = require('./helper');
var Server = require('./server');
var watch = require('./watch');
-function ebookCommand(format) {
- return {
- name: format + ' [book] [output]',
- description: 'generates ebook '+format,
- options: [
- helper.options.log
- ],
- exec: helper.bookCmd(function(book, args, kwargs) {
- var output = new EBookOutput(book, {
- format: format
- });
-
- return output.book.parse()
- .then(function() {
- // Set output folder
- if (args[0]) {
- output.book.config.set('output', path.resolve(process.cwd(), args[0]));
- }
-
- return output.generate();
- });
- })
- };
-}
-
-
module.exports = {
commands: [
@@ -98,9 +71,9 @@ module.exports = {
})
},
- ebookCommand('pdf'),
- ebookCommand('epub'),
- ebookCommand('mobi'),
+ helper.ebookCmd('pdf'),
+ helper.ebookCmd('epub'),
+ helper.ebookCmd('mobi'),
{
name: 'serve [book]',