diff options
author | Dmitry Ilvokhin <d@ilvokhin.com> | 2022-12-24 18:10:17 +0000 |
---|---|---|
committer | Dmitry Ilvokhin <d@ilvokhin.com> | 2022-12-24 18:10:17 +0000 |
commit | 54ac714da7175a8a08239e500a4e75a48b97d97e (patch) | |
tree | 8fa4bb4e7d37f2b6eff7068d47a58ca2ad93f18d /blog/blog.py | |
download | blog-54ac714da7175a8a08239e500a4e75a48b97d97e.tar.gz blog-54ac714da7175a8a08239e500a4e75a48b97d97e.tar.bz2 blog-54ac714da7175a8a08239e500a4e75a48b97d97e.zip |
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.
Diffstat (limited to 'blog/blog.py')
-rw-r--r-- | blog/blog.py | 53 |
1 files changed, 53 insertions, 0 deletions
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() |