summaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
authordavidovski <david@sendula.com>2021-08-26 04:15:22 +0100
committerdavidovski <david@sendula.com>2021-08-26 04:15:22 +0100
commitdaaf7d4350bafc71f25ecde6d03a24b59ed49c50 (patch)
treed5fb9fe514eb04277eeb25bc000c311fef156bc4 /build.py
initial commit
Diffstat (limited to 'build.py')
-rw-r--r--build.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/build.py b/build.py
new file mode 100644
index 0000000..5e9a0c3
--- /dev/null
+++ b/build.py
@@ -0,0 +1,107 @@
+import markdown
+import os
+import time
+import shutil
+
+from const import *
+
+def getTemplateHTML(name):
+ html = ""
+ with open(os.path.join(templates, name), "r") as file:
+ html = file.read();
+ return html
+
+def listPages():
+ return [
+ (lambda path:
+ (lambda content:
+ (lambda timestamp:
+ (lambda name: {
+ "source_file" : path,
+ "source_content" : content,
+ "html" : markdown.markdown(content),
+ "timestamp" : timestamp,
+ "date": time.strftime(date_format, time.localtime(timestamp)),
+ "name" : name,
+ "url" : f"entries/{name}.html"
+ })(".".join(p.split(".")[:-1]))
+ )(os.stat(path).st_ctime)
+ )(open(path, "r").read())
+ )(os.path.join(source, p)) for p in os.listdir(source)
+ ]
+
+def formatEntry(content, page):
+ return content.replace("%date%", page["date"])\
+ .replace("%name%", page["name"])\
+ .replace("%time%", str(page["timestamp"]))\
+ .replace("%source%", site_index + page["source_file"])\
+ .replace("%url%", site_index + page["url"])
+
+def make():
+
+ try:
+ os.makedirs(os.path.join(dist, "entries"))
+ except:
+ print("Already have content")
+ shutil.rmtree(os.path.join(dist, "src"))
+ shutil.rmtree(os.path.join(dist, "images"))
+ shutil.copytree(source, os.path.join(dist, "src"))
+ shutil.copytree(images, os.path.join(dist, "images"))
+
+ pages = listPages()
+
+ summary_templ = getTemplateHTML("summary.html")
+
+ summariesHTML = "\n".join(
+ [
+ formatEntry(summary_templ, page)
+ .replace(
+ "%content%",
+ "\n".join(page["html"].split("\n")[:summary_max])
+ )
+
+ for page in pages
+ ]
+ )
+
+ entry_templ = getTemplateHTML("page.html")
+
+ for page in pages:
+ with open(os.path.join(dist, page["url"]), "w") as entry:
+ entry.write(
+ formatEntry(
+ entry_templ,
+ page
+ )
+ .replace("%content%", page["html"])
+ )
+
+
+
+ index_templ = getTemplateHTML("index.html")
+
+ with open(os.path.join(dist, "index.html"), "w") as index:
+ index.write(
+ index_templ.replace("%entries%", summariesHTML)
+ )
+
+
+ item_templ = getTemplateHTML("item.xml")
+ rss_templ = getTemplateHTML("rss.xml")
+ itemsXML = "\n".join(
+ [
+ formatEntry(item_templ, page).replace("%content%", page["html"])
+ for page in pages
+ ]
+ )
+
+ with open(os.path.join(dist, "rss.xml"), "w") as index:
+ index.write(
+ rss_templ.replace("%items%", itemsXML)
+ )
+
+ print(f"built in {len(pages)} pages")
+make()
+
+
+