From 1b7eebb3563dab36584247bcab1d8e3b4e78833b Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Wed, 25 Mar 2020 18:48:12 +0100 Subject: Split index generation and HTML conversion So that I can re-use generate-index.py for READMEs. --- repo/www/generate-index.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 repo/www/generate-index.py (limited to 'repo/www/generate-index.py') diff --git a/repo/www/generate-index.py b/repo/www/generate-index.py new file mode 100755 index 0000000..23df192 --- /dev/null +++ b/repo/www/generate-index.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +from os import path +from sys import argv, exit + +from git import Repo + +from helpers import compute_directories + + +def parse_arguments(args): + if len(args) != 3: + exit(f'Usage: {argv[0]} EXTENSIONS FOLDER') + + return argv[1].split(), argv[2] + + +def list_files(extensions, folder): + directories = compute_directories( + extensions, Repo(search_parent_directories=True) + ) + return directories[folder].subfolders, directories[folder].files + + +def generate_index_page(title, directories, files): + lines = (f'% {title}',) + tuple( + f'- [{d}/]({d}/index.html)' for d in directories + ) + tuple( + f'- [{f}]({f}.html)' for f in files + ) + return '\n'.join(lines) + + +def main(arguments): + extensions, folder = parse_arguments(arguments) + + title = path.basename(folder) if folder else 'index' + + folders, files = list_files(extensions, folder) + + parsed_filenames = (path.splitext(f) for f in files) + names = tuple(name for name, _ in parsed_filenames) + + print(generate_index_page(title, folders, names)) + + +if __name__ == '__main__': + main(argv) -- cgit v1.2.3