Complete ebook command to output one file

This commit is contained in:
Samy Pessé
2016-02-21 18:33:07 +01:00
parent ab541c1653
commit 7b2e332f6c
2 changed files with 40 additions and 30 deletions
+37
View File
@@ -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,
+3 -30
View File
@@ -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]',