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.js140
1 files changed, 0 insertions, 140 deletions
diff --git a/lib/cli/helper.js b/lib/cli/helper.js
deleted file mode 100644
index 02cede6..0000000
--- a/lib/cli/helper.js
+++ /dev/null
@@ -1,140 +0,0 @@
-var _ = require('lodash');
-var path = require('path');
-
-var Book = require('../book');
-var NodeFS = require('../fs/node');
-var Logger = require('../utils/logger');
-var Promise = require('../utils/promise');
-var fs = require('../utils/fs');
-var JSONOutput = require('../output/json');
-var WebsiteOutput = require('../output/website');
-var EBookOutput = require('../output/ebook');
-
-var nodeFS = new NodeFS();
-
-var LOG_OPTION = {
- name: 'log',
- description: 'Minimum log level to display',
- values: _.chain(Logger.LEVELS)
- .keys()
- .map(function(s) {
- return s.toLowerCase();
- })
- .value(),
- defaults: 'info'
-};
-
-var FORMAT_OPTION = {
- name: 'format',
- description: 'Format to build to',
- values: ['website', 'json', 'ebook'],
- defaults: 'website'
-};
-
-var FORMATS = {
- json: JSONOutput,
- website: WebsiteOutput,
- ebook: EBookOutput
-};
-
-// Commands which is processing a book
-// the root of the book is the first argument (or current directory)
-function bookCmd(fn) {
- return function(args, kwargs) {
- var input = path.resolve(args[0] || process.cwd());
- var book = new Book({
- fs: nodeFS,
- root: input,
- logLevel: kwargs.log
- });
-
- return fn(book, args.slice(1), kwargs);
- };
-}
-
-// Commands which is working on a Output instance
-function outputCmd(fn) {
- return bookCmd(function(book, args, kwargs) {
- var Out = FORMATS[kwargs.format];
- var outputFolder = undefined;
-
- // Set output folder
- if (args[0]) {
- outputFolder = path.resolve(process.cwd(), args[0]);
- }
-
- return fn(new Out(book, {
- root: outputFolder
- }), args);
- });
-}
-
-// 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 ext = '.'+format;
- var outputFile = path.resolve(process.cwd(), args[0] || ('book' + ext));
- var output = new EBookOutput(book, {
- root: dir,
- format: format
- });
-
- return output.book.parse()
- .then(function() {
- return output.generate();
- })
-
- // Copy the ebook files
- .then(function() {
- if (output.book.isMultilingual()) {
- return Promise.serie(output.book.langs.list(), function(lang) {
- var _outputFile = path.join(
- path.dirname(outputFile),
- path.basename(outputFile, ext) + '_' + lang.id + ext
- );
-
- return fs.copy(
- path.resolve(dir, lang.id, 'index' + ext),
- _outputFile
- );
- })
- .thenResolve(output.book.langs.count());
- } else {
- return fs.copy(
- path.resolve(dir, 'index' + ext),
- outputFile
- ).thenResolve(1);
- }
- })
- .then(function(n) {
- output.book.log.info.ok(n+' file(s) generated');
-
- output.book.log.info('cleaning up... ');
- return output.book.log.info.promise(fs.rmDir(dir));
- });
- });
- })
- };
-}
-
-module.exports = {
- nodeFS: nodeFS,
- bookCmd: bookCmd,
- outputCmd: outputCmd,
- ebookCmd: ebookCmd,
-
- options: {
- log: LOG_OPTION,
- format: FORMAT_OPTION
- },
-
- FORMATS: FORMATS
-};