1import argparse
2import os
3import pydot
4import sys
5import warnings
6
7def gen_graph_from_gv(ifile, odir, oformat="png"):
8    (graph,) = pydot.graph_from_dot_file(ifile)
9    gen_graph_func = getattr(graph, "write_" + oformat)
10    filename = os.path.basename(ifile)
11    ofile = odir + "/" + os.path.splitext(filename)[0] + "." + oformat
12    gen_graph_func(ofile)
13
14parser = argparse.ArgumentParser(description='Process some integers.')
15parser.add_argument('-i', "--infile", action="append",
16                    help="graphviz file path")
17parser.add_argument('-o', '--outdir',
18                    help='sum the integers (default: find the max)')
19parser.add_argument('-f', '--outformat', default="png",
20        help='output image format (default: png)')
21
22args = parser.parse_args()
23
24# Image source directory
25img_src_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
26
27img_files = []
28if args.infile:
29    for f in args.infile:
30        if not os.path.isfile(f):
31            f = img_src_dir + "/" + f
32        if not os.path.isfile(f):
33            warnings.warn("Input file: " + f + " doesn't exist.")
34        else:
35            img_files.append(f)
36else:
37    for f in os.listdir(img_src_dir):
38        if f.endswith(".gv"):
39            img_files.append(img_src_dir + "/" + f)
40
41if not img_files:
42    sys.exit("ERROR: no found image files.")
43
44oformat = args.outformat
45
46if args.outdir:
47    odir = args.outdir
48    if not os.path.isdir(odir):
49        sys.exit("--outdir " + odir + "doesn't exist")
50else:
51    odir = os.path.dirname(img_src_dir) + "/img"
52
53for f in img_files:
54    print("Generating " + oformat + " for " + f + " ...")
55    gen_graph_from_gv(f, odir, oformat)
56