summaryrefslogtreecommitdiff
path: root/repo/www/generate-page.py
blob: 967689ed8568d3909ce8c9a6b50e1dfa9097e3e5 (plain)
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
59
60
#!/usr/bin/env python3

from argparse import ArgumentParser
from os import path
from pathlib import Path

from git import Repo

from helpers import generate_crumbs, pandoc


def parse_arguments():
    parser = ArgumentParser()
    parser.add_argument(
        '--template', help='Pandoc template for HTML output.'
    )
    parser.add_argument(
        '--site-title', help='Prefix to add to <title>.'
    )
    parser.add_argument(
        '--lua-filter', dest='filters', action='append',
        help='Lua filter to run the page through.'
    )
    parser.add_argument(
        '--stylesheet', dest='css', action='append',
        help='CSS stylesheet to link to.'
    )
    parser.add_argument(
        '--title', help='Page title.'
    )
    parser.add_argument(
        'page', help='Page to convert to HTML.'
    )
    parser.add_argument(
        'output', help='Path to the output file.'
    )
    return parser.parse_args()


def main(arguments):
    repo_top = Repo(search_parent_directories=True).working_dir
    path_to_top = path.relpath(repo_top, path.dirname(arguments.page))
    stylesheets = (path.join(path_to_top, s) for s in arguments.css)

    page_path = Path(arguments.page).resolve().relative_to(repo_top)

    pandoc(
        arguments.page,
        arguments.output,
        arguments.template,
        arguments.filters,
        stylesheets,
        site_title=arguments.site_title,
        variables={'crumbs': generate_crumbs(page_path)},
        metadata={'pagetitle':arguments.title}
    )


if __name__ == '__main__':
    main(parse_arguments())