From 7731646970aaa89012cde2e8383bfb4687a5efe0 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Thu, 10 Oct 2019 12:04:08 +0200 Subject: [PATCH] made feeds, blog and sitemap be created on script startup too --- node/blog.js | 94 ++++++++++++++++++++++++++----------------------- node/rss.js | 18 ++++++---- node/sitemap.js | 78 +++++++++++++++++++++------------------- 3 files changed, 104 insertions(+), 86 deletions(-) diff --git a/node/blog.js b/node/blog.js index 253bfe6..9a7aa4b 100644 --- a/node/blog.js +++ b/node/blog.js @@ -14,59 +14,65 @@ const converter = new showdown.Converter({ module.exports = function () { let folder = __dirname + "/../"; + createBlogPages(folder); + fs.watchFile(folder + "blog/posts.json", function (curr, prev) { if (curr.mtime == prev.mtime) return; - console.log("Refreshing blog sub-sites..."); + createBlogPages(folder); + }); +} - fs.readFile(folder + "index.html", function (_, data) { - // set up the template - let templateDom = new JSDOM(data); - var templateDoc = templateDom.window.document; - templateDoc.getElementById("main").innerHTML = ""; - let template = templateDom.serialize(); +function createBlogPages(folder) { + console.log("Refreshing blog sub-sites..."); - fs.readFile(folder + "blog/posts.json", function (_, data) { - let json = JSON.parse(data); - for (let i = 0; i < json.length; i++) { - let post = json[i]; - let id = post["id"]; - fs.readFile(folder + "blog/" + id + ".md", function (_, content) { - let dom = new JSDOM(template); - var document = dom.window.document; + fs.readFile(folder + "index.html", function (_, data) { + // set up the template + let templateDom = new JSDOM(data); + var templateDoc = templateDom.window.document; + templateDoc.getElementById("main").innerHTML = ""; + let template = templateDom.serialize(); - document.title += " - " + post["name"]; - document.querySelector('meta[property="og:title"]').setAttribute("content", post["name"]); - document.querySelector('meta[name="description"]').setAttribute("content", post["summary"]); - document.querySelector('meta[property="og:description"]').setAttribute("content", post["summary"]); + fs.readFile(folder + "blog/posts.json", function (_, data) { + let json = JSON.parse(data); + for (let i = 0; i < json.length; i++) { + let post = json[i]; + let id = post["id"]; + fs.readFile(folder + "blog/" + id + ".md", function (_, content) { + let dom = new JSDOM(template); + var document = dom.window.document; - var nav = ""; - nav += 'Back to Main Page'; - if (i > 0) - nav += 'Previous Post'; - if (i < json.length - 1) - nav += 'Next Post'; - document.getElementById("nav-items").innerHTML = nav; + document.title += " - " + post["name"]; + document.querySelector('meta[property="og:title"]').setAttribute("content", post["name"]); + document.querySelector('meta[name="description"]').setAttribute("content", post["summary"]); + document.querySelector('meta[property="og:description"]').setAttribute("content", post["summary"]); - var c = ""; - c += '
'; - c += '
' - c += '

' + post["name"] + '

'; - c += '
' - c += converter.makeHtml(content.toString()); - c += '
'; - c += '' + post["date"] + ""; - var discussLink = post["discuss"]; - if (discussLink) - c += 'Discuss this post' - c += '
'; - document.getElementById("main").innerHTML = c; + var nav = ""; + nav += 'Back to Main Page'; + if (i > 0) + nav += 'Previous Post'; + if (i < json.length - 1) + nav += 'Next Post'; + document.getElementById("nav-items").innerHTML = nav; - let html = dom.serialize(); - fs.writeFile(folder + "blog-" + id + ".html", html, function (_, _) {}); - }); - } - }); + var c = ""; + c += '
'; + c += '
' + c += '

' + post["name"] + '

'; + c += '
' + c += converter.makeHtml(content.toString()); + c += '
'; + c += '' + post["date"] + ""; + var discussLink = post["discuss"]; + if (discussLink) + c += 'Discuss this post' + c += '
'; + document.getElementById("main").innerHTML = c; + + let html = dom.serialize(); + fs.writeFile(folder + "blog-" + id + ".html", html, function (_, _) {}); + }); + } }); }); } \ No newline at end of file diff --git a/node/rss.js b/node/rss.js index fcc9337..29bb2ab 100644 --- a/node/rss.js +++ b/node/rss.js @@ -13,15 +13,21 @@ const converter = new showdown.Converter({ module.exports = function () { let folder = __dirname + "/../"; + createFeeds(folder); + fs.watchFile(folder + "blog/posts.json", function (curr, prev) { if (curr.mtime == prev.mtime) return; - console.log("Refreshing feeds..."); - createFeed(function (feed) { - fs.writeFile(folder + "feed.json", feed.json1(), function (_, _) {}); - fs.writeFile(folder + "rss.xml", feed.rss2(), function (_, _) {}); - fs.writeFile(folder + "atom.xml", feed.atom1(), function (_, _) {}); - }); + createFeeds(folder); + }); +} + +function createFeeds(folder) { + console.log("Refreshing feeds..."); + createFeed(function (feed) { + fs.writeFile(folder + "feed.json", feed.json1(), function (_, _) {}); + fs.writeFile(folder + "rss.xml", feed.rss2(), function (_, _) {}); + fs.writeFile(folder + "atom.xml", feed.atom1(), function (_, _) {}); }); } diff --git a/node/sitemap.js b/node/sitemap.js index cd38ecb..ca2c127 100644 --- a/node/sitemap.js +++ b/node/sitemap.js @@ -5,48 +5,54 @@ const fs = require("fs"); module.exports = function () { let folder = __dirname + "/../"; + refreshSitemap(folder); + fs.watchFile(folder + "blog/posts.json", function (curr, prev) { if (curr.mtime == prev.mtime) return; - console.log("Refreshing sitemap..."); + refreshSitemap(folder); + }); +} - let sitemap = createSitemap({ - hostname: 'https://ellpeck.de', - urls: [{ - url: '/', - priority: 0.8 - }, - { - url: '/#projects', - changefreq: 'monthly' - }, - { - url: '/#social', - changefreq: 'yearly' - }, - { - url: '/#about', - changefreq: 'monthly' - }, - { - url: '/#blog', - changefreq: 'weekly', - priority: 0.6 - } - ] - }); +function refreshSitemap(folder) { + console.log("Refreshing sitemap..."); - fs.readFile(folder + "blog/posts.json", function (_, data) { - let json = JSON.parse(data); - - for (let post of json) { - sitemap.add({ - url: "/blog-" + post["id"], - priority: 0.4 - }); + let sitemap = createSitemap({ + hostname: 'https://ellpeck.de', + urls: [{ + url: '/', + priority: 0.8 + }, + { + url: '/#projects', + changefreq: 'monthly' + }, + { + url: '/#social', + changefreq: 'yearly' + }, + { + url: '/#about', + changefreq: 'monthly' + }, + { + url: '/#blog', + changefreq: 'weekly', + priority: 0.6 } + ] + }); - fs.writeFile(folder + "/sitemap.xml", sitemap.toXML(), function (_, _) {}); - }); + fs.readFile(folder + "blog/posts.json", function (_, data) { + let json = JSON.parse(data); + + for (let post of json) { + sitemap.add({ + url: "/blog-" + post["id"], + priority: 0.4 + }); + } + + fs.writeFile(folder + "/sitemap.xml", sitemap.toXML(), function (_, _) {}); }); } \ No newline at end of file