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