2025-05-12 05:38:44 +09:00

80 lines
3.1 KiB
JavaScript

"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;