import os import sys import re dir = sys.argv[1] current_file = sys.argv[2] def add_to_tree(tree: list, path: str, vals: list) -> bool: root = tree[0] if root not in path: return False else: subtrees = [ child for child in tree[1] if type(child) == list ] for subtree in subtrees: if add_to_tree(subtree, path, vals): return True tree[1] += [[path, vals]] return True def gen_nav_tree(tree: list) -> str: nav_entries = [] for entry in tree[1]: if type(entry) == str: nav_entries += [entry] else: nav_entries += [f'
{gen_nav_tree(entry)}
'] return f'
{tree[0]}
{"".join(nav_entries)}
' tree = [] for root, dirs, files in os.walk(dir): rel_root = os.path.relpath(root, dir) entries = [] for name in files: if not name.endswith(".md"): continue html_name = re.sub(r"\.md$", ".html", name) full_path = os.path.join(rel_root, html_name) nav_entry = '' if full_path in current_file: nav_entry = f'
{html_name}
' else: nav_entry = f'
{html_name}
' entries += [nav_entry] if not entries: continue if not tree: tree = [rel_root, entries] else: add_to_tree(tree, rel_root, entries) nav_tree = gen_nav_tree(tree) nav_bar = f'' print(nav_bar)