diff options
| author | Fuwn <[email protected]> | 2020-11-06 18:24:26 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2020-11-06 18:24:26 -0800 |
| commit | 9cdce4254700691301608c6f1d3081950023cc4f (patch) | |
| tree | 9d24529acc19b354f80cb2d610aa1e7686f4d530 /save-article.js | |
| download | blog-9cdce4254700691301608c6f1d3081950023cc4f.tar.xz blog-9cdce4254700691301608c6f1d3081950023cc4f.zip | |
repo: initial :star:
Diffstat (limited to 'save-article.js')
| -rw-r--r-- | save-article.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/save-article.js b/save-article.js new file mode 100644 index 0000000..63145a2 --- /dev/null +++ b/save-article.js @@ -0,0 +1,40 @@ +const ejs = require("ejs"); +const fs = require("fs"); +const mkdirp = require("mkdirp"); +const path = require("path"); + +function saveArticle(article) { + return new Promise((resolve, reject) => { + fs.readFile("templates/article.ejs", (err, articleTemplate) => { + if (err) { return reject(err); } + + fs.readFile("templates/layout.ejs", (err, layoutTemplate) => { + if (err) { return reject(err); } + + const articleBodyHTML = ejs.render(articleTemplate.toString(), article); + const articleHTML = ejs.render(layoutTemplate.toString(), { + title: article.title + " | Fuwn", + body: articleBodyHTML, + description: article.description || article.summary, + }); + + const articlePath = path.join("output", article.route); + + mkdirp(articlePath, err => { + if (err) { return reject(err); } + + fs.writeFile( + path.join(articlePath, "index.html"), + articleHTML, + err => { + if (err) { return reject(err); } + resolve("ok"); + } + ); + }); + }); + }); + }); +} + +module.exports = saveArticle; |