From 54ac714da7175a8a08239e500a4e75a48b97d97e Mon Sep 17 00:00:00 2001 From: Dmitry Ilvokhin Date: Sat, 24 Dec 2022 18:10:17 +0000 Subject: Initial version of generator Generation of feed page and post pages are supported. Markdown to html conversion seems working. At least there is nothing strange with hello-world example. --- blog/blog.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 blog/blog.py (limited to 'blog/blog.py') diff --git a/blog/blog.py b/blog/blog.py new file mode 100644 index 0000000..cb6ab1e --- /dev/null +++ b/blog/blog.py @@ -0,0 +1,53 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -* + +import os +import shutil + +from jinja2 import Environment, FileSystemLoader, select_autoescape + +from post import Post +from feed import Feed + + +def recreate_workdir(basedir): + if os.path.exists(basedir): + shutil.rmtree(basedir) + os.makedirs(basedir) + + +def find_posts(template, basedir): + posts = [] + for subdir in os.listdir(basedir): + posts.append(Post(template, os.path.join(basedir, subdir))) + return posts + + +def generate_blog(include_drafts=False): + env = Environment(loader=FileSystemLoader(searchpath="templates"), + autoescape=select_autoescape()) + + posts = find_posts(env.get_template("post.html"), + os.path.join("posts", "public")) + + if include_drafts: + drafts = find_posts(env.get_template("post.html"), + os.path.join("posts", "drafts")) + posts.extend(drafts) + + workdir = "remote" + recreate_workdir(workdir) + + for post in posts: + post.generate(workdir) + + feed = Feed(env.get_template("feed.html"), posts) + feed.generate(workdir) + + +def main(): + generate_blog(include_drafts=True) + + +if __name__ == "__main__": + main() -- cgit v1.2.3-70-g09d2