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