UNPKG

honkit

Version:

HonKit is building beautiful books using Markdown.

85 lines (81 loc) 2.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const website_1 = __importDefault(require("../website")); const json_1 = __importDefault(require("../../json")); const templating_1 = __importDefault(require("../../templating")); const promise_1 = __importDefault(require("../../utils/promise")); const error_1 = __importDefault(require("../../utils/error")); const command_1 = __importDefault(require("../../utils/command")); const writeFile_1 = __importDefault(require("../helper/writeFile")); const getConvertOptions_1 = __importDefault(require("./getConvertOptions")); const SUMMARY_FILE = "SUMMARY.html"; /** Write the SUMMARY.html @param {Output} @return {Output} */ function writeSummary(output) { const options = output.getOptions(); const prefix = options.get("prefix"); const filePath = SUMMARY_FILE; const engine = website_1.default.createTemplateEngine(output, filePath); const context = json_1.default.encodeOutput(output); // Render the theme return (templating_1.default.renderFile(engine, `${prefix}/summary.html`, context) // Write it to the disk .then((tplOut) => { return (0, writeFile_1.default)(output, filePath, tplOut.getContent()); })); } /** Generate the ebook file as "index.pdf" @param {Output} @return {Output} */ function runEbookConvert(output) { const logger = output.getLogger(); const options = output.getOptions(); const format = options.get("format"); const outputFolder = output.getRoot(); if (!format) { return (0, promise_1.default)(output); } return (0, getConvertOptions_1.default)(output) .then((options) => { const cmd = [ "ebook-convert", path_1.default.resolve(outputFolder, SUMMARY_FILE), path_1.default.resolve(outputFolder, `index.${format}`), command_1.default.optionsToShellArgs(options) ].join(" "); return (command_1.default // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1. .exec(cmd) .progress((data) => { logger.debug(data); }) .fail((err) => { if (err.code == 127) { throw error_1.default.RequireInstallError({ cmd: "ebook-convert", install: "Install it from Calibre: https://calibre-ebook.com" }); } throw error_1.default.EbookError(err); })); }) .thenResolve(output); } /** Finish the generation, generates the SUMMARY.html @param {Output} @return {Output} */ function onFinish(output) { return writeSummary(output).then(runEbookConvert); } exports.default = onFinish;