summaryrefslogtreecommitdiffstats
path: root/lib/output/generateBook.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/output/generateBook.js')
-rw-r--r--lib/output/generateBook.js193
1 files changed, 0 insertions, 193 deletions
diff --git a/lib/output/generateBook.js b/lib/output/generateBook.js
deleted file mode 100644
index 46712bd..0000000
--- a/lib/output/generateBook.js
+++ /dev/null
@@ -1,193 +0,0 @@
-var path = require('path');
-var Immutable = require('immutable');
-
-var Output = require('../models/output');
-var Promise = require('../utils/promise');
-var fs = require('../utils/fs');
-
-var callHook = require('./callHook');
-var preparePlugins = require('./preparePlugins');
-var preparePages = require('./preparePages');
-var prepareAssets = require('./prepareAssets');
-var generateAssets = require('./generateAssets');
-var generatePages = require('./generatePages');
-
-/**
- * Process an output to generate the book
- *
- * @param {Generator} generator
- * @param {Output} output
- * @return {Promise<Output>}
- */
-function processOutput(generator, startOutput) {
- return Promise(startOutput)
- .then(preparePlugins)
- .then(preparePages)
- .then(prepareAssets)
-
- .then(
- callHook.bind(null,
- 'config',
- function(output) {
- var book = output.getBook();
- var config = book.getConfig();
- var values = config.getValues();
-
- return values.toJS();
- },
- function(output, result) {
- var book = output.getBook();
- var config = book.getConfig();
-
- config = config.updateValues(result);
- book = book.set('config', config);
- return output.set('book', book);
- }
- )
- )
-
- .then(
- callHook.bind(null,
- 'init',
- function(output) {
- return {};
- },
- function(output) {
- return output;
- }
- )
- )
-
- .then(function(output) {
- if (!generator.onInit) {
- return output;
- }
-
- return generator.onInit(output);
- })
-
- .then(generateAssets.bind(null, generator))
- .then(generatePages.bind(null, generator))
-
- .tap(function(output) {
- var book = output.getBook();
-
- if (!book.isMultilingual()) {
- return;
- }
-
- var logger = book.getLogger();
- var books = book.getBooks();
- var outputRoot = output.getRoot();
- var plugins = output.getPlugins();
- var state = output.getState();
- var options = output.getOptions();
-
- return Promise.forEach(books, function(langBook) {
- // Inherits plugins list, options and state
- var langOptions = options.set('root', path.join(outputRoot, langBook.getLanguage()));
- var langOutput = new Output({
- book: langBook,
- options: langOptions,
- state: state,
- generator: generator.name,
- plugins: plugins
- });
-
- logger.info.ln('');
- logger.info.ln('generating language "' + langBook.getLanguage() + '"');
- return processOutput(generator, langOutput);
- });
- })
-
- .then(callHook.bind(null,
- 'finish:before',
- function(output) {
- return {};
- },
- function(output) {
- return output;
- }
- )
- )
-
- .then(function(output) {
- if (!generator.onFinish) {
- return output;
- }
-
- return generator.onFinish(output);
- })
-
- .then(callHook.bind(null,
- 'finish',
- function(output) {
- return {};
- },
- function(output) {
- return output;
- }
- )
- );
-}
-
-/**
- * Generate a book using a generator.
- *
- * The overall process is:
- * 1. List and load plugins for this book
- * 2. Call hook "config"
- * 3. Call hook "init"
- * 4. Initialize generator
- * 5. List all assets and pages
- * 6. Copy all assets to output
- * 7. Generate all pages
- * 8. Call hook "finish:before"
- * 9. Finish generation
- * 10. Call hook "finish"
- *
- *
- * @param {Generator} generator
- * @param {Book} book
- * @param {Object} options
- * @return {Promise<Output>}
- */
-function generateBook(generator, book, options) {
- options = generator.Options(options);
- var state = generator.State? generator.State({}) : Immutable.Map();
- var start = Date.now();
-
- return Promise(
- new Output({
- book: book,
- options: options,
- state: state,
- generator: generator.name
- })
- )
-
- // Cleanup output folder
- .then(function(output) {
- var logger = output.getLogger();
- var rootFolder = output.getRoot();
-
- logger.debug.ln('cleanup folder "' + rootFolder + '"');
- return fs.ensureFolder(rootFolder)
- .thenResolve(output);
- })
-
- .then(processOutput.bind(null, generator))
-
- // Log duration and end message
- .then(function(output) {
- var logger = output.getLogger();
- var end = Date.now();
- var duration = (end - start)/1000;
-
- logger.info.ok('generation finished with success in ' + duration.toFixed(1) + 's !');
-
- return output;
- });
-}
-
-module.exports = generateBook;