"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 node_1 = __importDefault(require("./fs/node")); const fs_1 = __importDefault(require("./utils/fs")); const promise_1 = __importDefault(require("./utils/promise")); const file_1 = __importDefault(require("./models/file")); const readme_1 = __importDefault(require("./models/readme")); const book_1 = __importDefault(require("./models/book")); const parse_1 = __importDefault(require("./parse")); /** Initialize folder structure for a book Read SUMMARY to created the right chapter @param {Book} @param {string} @return {Promise} */ function initBook(rootFolder) { const extension = ".md"; return (fs_1.default .mkdirp(rootFolder) // Parse the summary and readme .then(() => { const fs = (0, node_1.default)(rootFolder); const book = book_1.default.createForFS(fs); return (parse_1.default.parseReadme(book) // Setup default readme if doesn't found one .fail(() => { const readmeFile = file_1.default.createWithFilepath(`README${extension}`); // @ts-expect-error ts-migrate(2339) FIXME: Property 'create' does not exist on type 'Class'. const readme = readme_1.default.create(readmeFile); return book.setReadme(readme); })); }) .then(parse_1.default.parseSummary) .then((book) => { const logger = book.getLogger(); const summary = book.getSummary(); const summaryFile = summary.getFile(); const summaryFilename = summaryFile.getPath() || `SUMMARY${extension}`; const articles = summary.getArticlesAsList(); // Write pages return (promise_1.default.forEach(articles, (article) => { const articlePath = article.getPath(); const filePath = articlePath ? path_1.default.join(rootFolder, articlePath) : null; if (!filePath) { return; } return fs_1.default.assertFile(filePath, () => { return fs_1.default.ensureFile(filePath).then(() => { logger.info.ln("create", article.getPath()); return fs_1.default.writeFile(filePath, `# ${article.getTitle()}\n\n`); }); }); }) // Write summary .then(() => { const filePath = path_1.default.join(rootFolder, summaryFilename); return fs_1.default .ensureFile(filePath) .then(() => { logger.info.ln(`create ${path_1.default.basename(filePath)}`); return summary.toText(extension); }) .then((content) => { return fs_1.default.writeFile(filePath, content); }); }) // Log end .then(() => { logger.info.ln("initialization is finished"); })); })); } exports.default = initBook;