17553d27dSPatrick Sanan""" Helper to make links in HTML pages relative to a root """ 27553d27dSPatrick Sanan 37553d27dSPatrick Sananimport os 47553d27dSPatrick Sananimport fileinput 57553d27dSPatrick Sanan 678fb2c35SPatrick Sanandef make_links_relative(root, placeholder="PETSC_DOC_OUT_ROOT_PLACEHOLDER"): 77553d27dSPatrick Sanan """ For .html files in root, replace placeholder with a relative path back up to root """ 87553d27dSPatrick Sanan excludes = ["_static", "_sources", "_images", "docs", "src", "include"] 97553d27dSPatrick Sanan root_level = root.count(os.path.sep) 107553d27dSPatrick Sanan for dirpath, dirnames, filenames in os.walk(root, topdown=True): 117553d27dSPatrick Sanan dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes] 127553d27dSPatrick Sanan level = dirpath.count(os.path.sep) - root_level 13*1f43888bSPatrick Sanan relpath = os.path.sep.join([".."] * level) 147553d27dSPatrick Sanan for filename in filenames: 157553d27dSPatrick Sanan if filename.endswith(".html"): 167553d27dSPatrick Sanan filename_from_root = os.path.join(dirpath, filename) 177553d27dSPatrick Sanan with fileinput.FileInput(filename_from_root, inplace=True) as file: 187553d27dSPatrick Sanan for line in file: 197553d27dSPatrick Sanan print(line.replace(placeholder, relpath), end='') # prints to file 20