xref: /petsc/doc/update_htmlmap_links.py (revision 5becb6a3a7fe6fe66ca978502f4679a4b24b29fc)
1*5becb6a3SPatrick Sananimport shutil
2*5becb6a3SPatrick Sananimport re
3*5becb6a3SPatrick Sananimport os
4*5becb6a3SPatrick Sanan
5*5becb6a3SPatrick Sananfrom build_classic_docs import HTMLMAP_DEFAULT_LOCATION
6*5becb6a3SPatrick Sanan
7*5becb6a3SPatrick Sanan
8*5becb6a3SPatrick Sanandef update_htmlmap_links(builder,
9*5becb6a3SPatrick Sanan                         htmlmap_filename=HTMLMAP_DEFAULT_LOCATION,
10*5becb6a3SPatrick Sanan                         htmlmap_modified_filename=HTMLMAP_DEFAULT_LOCATION + "_modified"):
11*5becb6a3SPatrick Sanan    """ Update manualpage links in an htmlmap file for use with Sphinx HTML builders
12*5becb6a3SPatrick Sanan
13*5becb6a3SPatrick Sanan        This converts source files (.md) to the locations of the resulting .html pages
14*5becb6a3SPatrick Sanan        or directories (which a web server will redirect to the index.html inside).
15*5becb6a3SPatrick Sanan    """
16*5becb6a3SPatrick Sanan
17*5becb6a3SPatrick Sanan    if builder.name == "dirhtml":
18*5becb6a3SPatrick Sanan        postfix = "/"
19*5becb6a3SPatrick Sanan    elif builder.name == "html":
20*5becb6a3SPatrick Sanan        postfix = ".html"
21*5becb6a3SPatrick Sanan    else:
22*5becb6a3SPatrick Sanan        raise Exception("Unsupported builder named %s" % builder.name)
23*5becb6a3SPatrick Sanan
24*5becb6a3SPatrick Sanan    with open(htmlmap_modified_filename, "w") as htmlmap_modified_file, open(htmlmap_filename, "r") as htmlmap_file:
25*5becb6a3SPatrick Sanan        pattern = re.compile(".*\+\+\+\+man\+(.*)$")  # Match URL in group
26*5becb6a3SPatrick Sanan        for line in htmlmap_file.readlines():
27*5becb6a3SPatrick Sanan            match = re.match(pattern, line)
28*5becb6a3SPatrick Sanan            if match:
29*5becb6a3SPatrick Sanan                url = match.group(1)
30*5becb6a3SPatrick Sanan                if url.startswith("manualpages"):
31*5becb6a3SPatrick Sanan                    line = os.path.splitext(line)[0] + postfix + "\n"
32*5becb6a3SPatrick Sanan            htmlmap_modified_file.write(line)
33