diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2020-09-28 19:49:44 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2020-09-28 19:49:44 +0200 |
| commit | 8822043d6bc93571e400f6e236900a8668a5d724 (patch) | |
| tree | 49819e64ccc5ba982c2f084acd6cbaf4822b577a /repo/www/generate-index.py | |
| parent | 4e695c301cae8fa2e6d6ab582de2415fc481e1b6 (diff) | |
| parent | 7bc5ee87b62ab7dffd16913e6864b49e2dbfad06 (diff) | |
| download | memory-leaks-8822043d6bc93571e400f6e236900a8668a5d724.tar.xz | |
Merge branch 'crumbs'
Diffstat (limited to 'repo/www/generate-index.py')
| -rwxr-xr-x | repo/www/generate-index.py | 42 |
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__': |
