80 lines
3.1 KiB
JavaScript
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;
|