Newer
Older
import os
import click
import re
import pickle
@click.command()
@click.option(
"-b",
"--buildpath",
type=str,
required=True,
default="sphinx-doc/_build/html/_api",
help="Relative path to the html api files to be manipulated (relative to sphinx root).",
"-sr",
"--sphinxroot",
type=str,
required=True,
default="..",
help="Relative path to the sphinx root.",
"-p",
"--pckpath",
type=str,
required=True,
default="docs/doc_modules/func_modules",
help="Relative path to the documented package (relative to sphinx root).",
)
def main(buildpath, sphinxroot, pckpath):
root_path = os.path.abspath(sphinxroot)
buildpath = os.path.join(root_path, buildpath)
pckpath = os.path.join(root_path, pckpath)
files = os.listdir(buildpath)
# gather all files from the doc module
files = [f for f in files if re.search("^docs\.", f)]
with open(os.path.join(pckpath, "module_dict.pkl"), "rb") as file_:
doc_mod_structure = pickle.load(file_)
for key in doc_mod_structure.keys():
# search for all function files assigned to the module
mod_f = [f for f in files if re.search(f"(^|[.]){key}\.[^.]*\.html", f)]
parts = file_.split(".")
module_domain = ".".join(parts[:-2])
with open(os.path.join(buildpath, file_), "r") as wf:
code = wf.read()
old_domain_str = f'<code class="sig-prename descclassname">{module_domain}'
new_domain = [
f.split(".")[0]
for f in doc_mod_structure[key]
if f.split(".")[1] == func
][0]
new_domain_str = f'<code class="sig-prename descclassname">{new_domain}'
code = code.replace(old_domain_str, new_domain_str)
with open(os.path.join(buildpath, file_), "w+") as wf: