xref: /llvm-project/bolt/utils/dot2html/dot2html.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
151c20e58SAmir Ayupov#!/usr/bin/env python3
251c20e58SAmir Ayupovimport argparse
351c20e58SAmir Ayupovimport os
451c20e58SAmir Ayupovimport sys
551c20e58SAmir Ayupov
651c20e58SAmir AyupovBASE_PATH = os.path.dirname(os.path.abspath(__file__))
7*f98ee40fSTobias HietaHTML_TEMPLATE_NAME = "d3-graphviz-template.html"
851c20e58SAmir AyupovHTML_TEMPLATE_PATH = os.path.join(BASE_PATH, HTML_TEMPLATE_NAME)
951c20e58SAmir Ayupov
10*f98ee40fSTobias Hieta
1151c20e58SAmir Ayupovdef main():
1251c20e58SAmir Ayupov    parser = argparse.ArgumentParser()
13*f98ee40fSTobias Hieta    parser.add_argument(
14*f98ee40fSTobias Hieta        "dotfile",
15*f98ee40fSTobias Hieta        nargs="?",
16*f98ee40fSTobias Hieta        type=argparse.FileType("r"),
1751c20e58SAmir Ayupov        default=sys.stdin,
18*f98ee40fSTobias Hieta        help="Input .dot file, reads from stdin if not set",
19*f98ee40fSTobias Hieta    )
20*f98ee40fSTobias Hieta    parser.add_argument(
21*f98ee40fSTobias Hieta        "htmlfile",
22*f98ee40fSTobias Hieta        nargs="?",
23*f98ee40fSTobias Hieta        type=argparse.FileType("w"),
2451c20e58SAmir Ayupov        default=sys.stdout,
25*f98ee40fSTobias Hieta        help="Output .html file, writes to stdout if not set",
26*f98ee40fSTobias Hieta    )
2751c20e58SAmir Ayupov    args = parser.parse_args()
2851c20e58SAmir Ayupov
29*f98ee40fSTobias Hieta    template = open(HTML_TEMPLATE_PATH, "r")
3051c20e58SAmir Ayupov
3151c20e58SAmir Ayupov    for line in template:
3251c20e58SAmir Ayupov        if "<INSERT_DOT>" in line:
33*f98ee40fSTobias Hieta            print(args.dotfile.read(), file=args.htmlfile, end="")
3451c20e58SAmir Ayupov        else:
35*f98ee40fSTobias Hieta            print(line, file=args.htmlfile, end="")
36*f98ee40fSTobias Hieta
3751c20e58SAmir Ayupov
3851c20e58SAmir Ayupovif __name__ == "__main__":
3951c20e58SAmir Ayupov    main()
40