64 lines
2.9 KiB
JavaScript
64 lines
2.9 KiB
JavaScript
"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));
|
|
}));
|
|
}
|
|
};
|
|
}
|