diff options
Diffstat (limited to 'build.py')
-rw-r--r-- | build.py | 107 |
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() + + + |