#!/usr/bin/env python3 from os import path from subprocess import run 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 ) mdown = '\n'.join(lines) return run( ('pandoc', '-s'), text=True, check=True, capture_output=True, input=mdown ).stdout 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)