"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const path_1 = __importDefault(require("path")); const promise_1 = __importDefault(require("../utils/promise")); const fs_1 = __importDefault(require("../utils/fs")); const parse_1 = __importDefault(require("../parse")); const output_1 = __importDefault(require("../output")); const options_1 = __importDefault(require("./options")); const getBook_1 = __importDefault(require("./getBook")); const page_cache_1 = require("../output/page-cache"); const tmpdir_1 = require("../fs/tmpdir"); function default_1(format) { return { name: `${format} [book] [output]`, description: "build a book into an ebook file", options: [options_1.default.log], exec: function (args, kwargs) { const extension = `.${format}`; // Output file will be stored in const outputFile = args[1] || `book${extension}`; // Create temporary directory const outputFolder = (0, tmpdir_1.createTmpDirWithRealPath)(); const book = (0, getBook_1.default)(args, kwargs); const logger = book.getLogger(); const Generator = output_1.default.getGenerator("ebook"); if (kwargs.reload) { (0, page_cache_1.clearCache)(); } return (parse_1.default.parseBook(book) .then((resultBook) => { return output_1.default.generate(Generator, resultBook, { root: outputFolder, format: format }); }) // Extract ebook file .then((output) => { const book = output.getBook(); const languages = book.getLanguages(); if (book.isMultilingual()) { return promise_1.default.forEach(languages.getList(), (lang) => { const langID = lang.getID(); const langOutputFile = path_1.default.join(path_1.default.dirname(outputFile), `${path_1.default.basename(outputFile, extension)}_${langID}${extension}`); return fs_1.default.copy(path_1.default.resolve(outputFolder, langID, `index${extension}`), langOutputFile); }).thenResolve(languages.getCount()); } else { return fs_1.default.copy(path_1.default.resolve(outputFolder, `index${extension}`), outputFile).thenResolve(1); } }) // Log end .then((count) => { logger.info.ok(`${count} file(s) generated`); logger.debug("cleaning up... "); return logger.debug.promise(fs_1.default.rmDir(outputFolder)); })); } }; }