#!/usr/bin/env python3 import os import frontmatter as fm import jinja2 from jinja2 import DebugUndefined def get_metas(blog): all_metas = [] files = [ blog + f for f in os.listdir(blog) if f not in ["_index.md", "feed.xml"]] for f in files: with open(f) as fx: meta, _ = fm.parse(fx.read()) all_metas.append(meta) all_metas.sort(key=lambda x: x['date'], reverse=True) return all_metas def jinja_render(posts, tmpl): template_loader = jinja2.FileSystemLoader("./") env = jinja2.Environment(loader=template_loader, undefined=DebugUndefined) try: template = env.get_template(tmpl) except jinja2.exceptions.TemplateNotFound: print("error: template not found") out = template.render(posts=posts) return out if __name__ == "__main__": all_metas = get_metas("pages/blog/") rendered = jinja_render(all_metas, "templates/_index.html") with open("templates/index.html", "w") as f: f.write(rendered)