#!/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) != 4: exit(f'Usage: {argv[0]} EXTENSIONS FOLDER OUTPUT-DIR') return argv[1].split(), argv[2], argv[3] 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, out_dir = 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) with open(path.join(out_dir, folder, 'index.html'), 'w') as index: index.write(generate_index_page(title, folders, names)) if __name__ == '__main__': main(argv)