xref: /llvm-project/bolt/utils/dot2html/dot2html.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
1#!/usr/bin/env python3
2import argparse
3import os
4import sys
5
6BASE_PATH = os.path.dirname(os.path.abspath(__file__))
7HTML_TEMPLATE_NAME = "d3-graphviz-template.html"
8HTML_TEMPLATE_PATH = os.path.join(BASE_PATH, HTML_TEMPLATE_NAME)
9
10
11def main():
12    parser = argparse.ArgumentParser()
13    parser.add_argument(
14        "dotfile",
15        nargs="?",
16        type=argparse.FileType("r"),
17        default=sys.stdin,
18        help="Input .dot file, reads from stdin if not set",
19    )
20    parser.add_argument(
21        "htmlfile",
22        nargs="?",
23        type=argparse.FileType("w"),
24        default=sys.stdout,
25        help="Output .html file, writes to stdout if not set",
26    )
27    args = parser.parse_args()
28
29    template = open(HTML_TEMPLATE_PATH, "r")
30
31    for line in template:
32        if "<INSERT_DOT>" in line:
33            print(args.dotfile.read(), file=args.htmlfile, end="")
34        else:
35            print(line, file=args.htmlfile, end="")
36
37
38if __name__ == "__main__":
39    main()
40