summaryrefslogtreecommitdiff
path: root/blog/blog.py
blob: b682afce5fbffdd42bc5b1c149b8e4c153c7463f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#! /usr/bin/env python3
# -*- coding: utf-8 -*

import os
import shutil
import argparse

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 copy_share(workdir):
    for filename in os.listdir("share"):
        source = os.path.join("share", filename)
        destination = os.path.join(workdir, filename)

        shutil.copy(source, destination)


def generate_blog():
    env = Environment(loader=FileSystemLoader(searchpath="templates"),
                      autoescape=select_autoescape())

    posts = find_posts(env.get_template("post.html"), "posts")

    workdir = "remote"
    recreate_workdir(workdir)

    for post in posts:
        post.generate(workdir)

    feed = Feed(env.get_template("feed.html"), posts)
    feed.generate(workdir)

    copy_share(workdir)


def main():
    generate_blog()


if __name__ == "__main__":
    main()