Add cli commands to build ebooks

This commit is contained in:
Samy Pessé
2016-02-21 17:24:26 +01:00
parent a9c96c1afa
commit cef4096b39
2 changed files with 33 additions and 1 deletions
+31
View File
@@ -7,11 +7,38 @@ 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: [
@@ -71,6 +98,10 @@ module.exports = {
})
},
ebookCommand('pdf'),
ebookCommand('epub'),
ebookCommand('mobi'),
{
name: 'serve [book]',
description: 'Build then serve a book from a directory',
+2 -1
View File
@@ -4,13 +4,14 @@ var juice = require('juice');
var command = require('../utils/command');
var fs = require('../utils/fs');
var Promise = require('../utils/promise');
var WebsiteOutput = require('./website');
var assetsInliner = require('./assets-inliner');
function _EbookOutput() {
WebsiteOutput.apply(this, arguments);
}
util.inherits(EbookOutput, WebsiteOutput);
util.inherits(_EbookOutput, WebsiteOutput);
var EbookOutput = assetsInliner(_EbookOutput);