diff --git a/htmlgen/htmlgen.py b/htmlgen/htmlgen.py old mode 100644 new mode 100755 index 862303f3..f0882480 --- a/htmlgen/htmlgen.py +++ b/htmlgen/htmlgen.py @@ -2,6 +2,51 @@ import os, sys, json, re +import argparse + +parser = argparse.ArgumentParser( + description="Generate a pretty HTML version of the documentation.") +parser.add_argument( + '--output', default=os.path.join(os.path.curdir, 'html'), + help='Put the generated files in this directory (default current dir).') +parser.add_argument( + '--settings', default=None, + help='Read the settings from file (default to environment).') + +args = parser.parse_args() + +if args.settings: + settings_filename = args.settings + + settings = { + 'XRAY_DATABASE_DIR': os.path.abspath( + os.path.join(os.path.dirname(settings_filename), '..')), + } + with open(settings_filename) as f: + for line in f: + line = line.strip() + if not line.startswith("export "): + continue + key, value = line[7:].split('=', 1) + settings[key] = value[1:-1] + + def get_setting(name): + return settings[name] +else: + def get_setting(name): + return os.getenv(name) + +db_dir = os.path.join(get_setting("XRAY_DATABASE_DIR"), get_setting("XRAY_DATABASE")) +def db_open(fn): + return open(os.path.join(db_dir, fn)) + +def out_open(fn): + out_dir = os.path.join(args.output, get_setting("XRAY_DATABASE")) + os.makedirs(out_dir, exist_ok=True) + fp = os.path.join(out_dir, fn) + print("Writing %s" % fp) + return open(fp, "w") + clb_bitgroups_db = [ # copy&paste from zero_db in dbfixup.py "00_21 00_22 00_26 01_28|00_25 01_20 01_21 01_24", @@ -93,8 +138,9 @@ routebits = dict() routezbits = dict() maskbits = dict() + print("Loading tilegrid.") -with open("../database/%s/tilegrid.json" % os.getenv("XRAY_DATABASE"), "r") as f: +with db_open("tilegrid.json") as f: grid = json.load(f) for segname, segdata in grid["segments"].items(): @@ -132,7 +178,7 @@ for segname, segdata in grid["segments"].items(): if segtype not in ["hclk_l", "hclk_r"]: print("Loading %s segbits." % segtype) - with open("../database/%s/segbits_%s.db" % (os.getenv("XRAY_DATABASE"), segtype)) as f: + with db_open("segbits_%s.db" % segtype) as f: for line in f: if re.search(r"(\.[ABCD]MUX\.)|(\.PRECYINIT\.)", line): add_pip_bits(line) @@ -140,7 +186,7 @@ for segname, segdata in grid["segments"].items(): add_single_bit(line) print("Loading %s segbits." % re.sub("clbl[lm]", "int", segtype)) - with open("../database/%s/segbits_%s.db" % (os.getenv("XRAY_DATABASE"), re.sub("clbl[lm]", "int", segtype))) as f: + with db_open("segbits_%s.db" % re.sub("clbl[lm]", "int", segtype)) as f: for line in f: if segtype in ["hclk_l", "hclk_r"] and ".ENABLE_BUFFER." in line: add_single_bit(line) @@ -148,7 +194,7 @@ for segname, segdata in grid["segments"].items(): add_pip_bits(line) print("Loading %s maskbits." % segtype) - with open("../database/%s/mask_%s.db" % (os.getenv("XRAY_DATABASE"), segtype)) as f: + with db_open("mask_%s.db" % segtype) as f: for line in f: _, bit = line.split() maskbits[segtype].add(bit) @@ -160,13 +206,11 @@ for segname, segdata in grid["segments"].items(): grid_range = None grid_map = dict() -print("Writing %s/index.html." % os.getenv("XRAY_DATABASE")) -os.makedirs(os.getenv("XRAY_DATABASE"), exist_ok=True) -with open("%s/index.html" % os.getenv("XRAY_DATABASE"), "w") as f: - print("
Part: %s
ROI: %s
ROI Frames: %s
Part: %s
ROI: %s
ROI Frames: %s
| PIP | Type |
|---|