1#!/usr/bin/env python 2""" Helper to make links in HTML pages relative to a root """ 3 4import os 5import fileinput 6 7def make_links_relative(root, placeholder="PETSC_DOC_ROOT_PLACEHOLDER"): 8 """ For .html files in root, replace placeholder with a relative path back up to root """ 9 excludes = ["_static", "_sources", "_images", "docs", "src", "include"] 10 root_level = root.count(os.path.sep) 11 for dirpath, dirnames, filenames in os.walk(root, topdown=True): 12 dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes] 13 level = dirpath.count(os.path.sep) - root_level 14 relpath = (".." + os.path.sep) * level 15 for filename in filenames: 16 if filename.endswith(".html"): 17 filename_from_root = os.path.join(dirpath, filename) 18 with fileinput.FileInput(filename_from_root, inplace=True) as file: 19 for line in file: 20 print(line.replace(placeholder, relpath), end='') # prints to file 21