summaryrefslogtreecommitdiff
path: root/repo/www/generate-index.py
diff options
context:
space:
mode:
Diffstat (limited to 'repo/www/generate-index.py')
-rwxr-xr-xrepo/www/generate-index.py42
1 files changed, 32 insertions, 10 deletions
diff --git a/repo/www/generate-index.py b/repo/www/generate-index.py
index 116a454..16d1874 100755
--- a/repo/www/generate-index.py
+++ b/repo/www/generate-index.py
@@ -3,13 +3,14 @@
from argparse import ArgumentParser
from itertools import chain
import json
+from os import path
from pathlib import Path
from subprocess import run
from tempfile import NamedTemporaryFile
from git import Repo
-from helpers import deserialize_directories, pandoc
+from helpers import deserialize_directories, generate_crumbs, pandoc
def parse_arguments():
@@ -25,6 +26,10 @@ def parse_arguments():
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(
'site_tree', help='JSON file describing the page tree.'
)
parser.add_argument(
@@ -87,9 +92,16 @@ def main(arguments):
folders, files = list_files(arguments.site_tree, target)
pages, readme = list_pages(files)
+ toc_title = f'Index for {target}' if target else 'Index'
html_toc = format_toc(folders, pages)
- index_title = f'Index for {target}' if target else 'Index'
+ path_to_top = path.relpath('.', start=target)
+ stylesheets = (path.join(path_to_top, s) for s in arguments.css)
+
+ variables = {'crumbs': generate_crumbs(Path(target)/'index')}
+ metadata = {}
+ if arguments.site_title is not None:
+ metadata['sitetitle'] = arguments.site_title
if readme is not None:
repo_top = Repo(search_parent_directories=True).working_dir
@@ -97,16 +109,20 @@ def main(arguments):
# If the README doesn't have a title, give a default to pandoc
# out-of-band.
- page_title = None if has_title(readme_path) else 'README'
+ if not has_title(readme_path):
+ metadata['pagetitle'] = target or 'README'
with NamedTemporaryFile(mode='w+') as toc:
- toc.write('<h1>{title}</h1>\n'.format(title=index_title))
+ toc.write(f'<h1>{toc_title}</h1>\n')
toc.write(html_toc)
toc.flush()
- pandoc(readme_path, arguments.output, arguments.template,
- arguments.filters, site_title=arguments.site_title,
- title=page_title, include_after=(toc.name,))
+ pandoc(
+ readme_path, arguments.output,
+ arguments.template, arguments.filters, stylesheets,
+ include_after=(toc.name,),
+ variables=variables, metadata=metadata
+ )
return
with NamedTemporaryFile(suffix='.md') as dummy_readme, \
@@ -114,9 +130,15 @@ def main(arguments):
toc.write(html_toc)
toc.flush()
- pandoc(dummy_readme.name, arguments.output, arguments.template,
- arguments.filters, site_title=arguments.site_title,
- title=index_title, include_after=(toc.name,))
+ metadata['pagetitle'] = toc_title
+ metadata['title'] = 'Index'
+
+ pandoc(
+ dummy_readme.name, arguments.output,
+ arguments.template, arguments.filters, stylesheets,
+ include_after=(toc.name,),
+ variables=variables, metadata=metadata
+ )
if __name__ == '__main__':