comparison python/gview.py @ 683:ce95c61cb435

add viewer for graphviz; silly, but effective
author Jeff Hammel <k0scist@gmail.com>
date Sat, 17 May 2014 00:15:45 -0700
parents
children 8b2787e98c01
comparison
equal deleted inserted replaced
682:3fe1024377ca 683:ce95c61cb435
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 """
5 view graphviz files
6
7 http://www.graphviz.org/
8 """
9
10 # imports
11 import argparse
12 import os
13 import subprocess
14 import sys
15 import tempfile
16
17 __all__ = ['main']
18 string = (str, unicode)
19
20 class Parser(argparse.ArgumentParser):
21 """CLI option parser"""
22 def __init__(self):
23 argparse.ArgumentParser.__init__(self, description=__doc__)
24 self.add_argument('input',
25 help='graphviz file to view')
26 self.add_argument('-o', '--output', dest='output',
27 help="path to save to")
28 self.add_argument('-e', '--program', dest='program',
29 default='dot',
30 help="GraphViz program to invoke [DEFAULT: %(default)s]")
31 self.add_argument('-v', '--view', dest='viewer', default='feh',
32 help="viewer")
33
34
35 def main(args=sys.argv[1:]):
36 """CLI"""
37
38 # parse command line
39 parser = Parser()
40 options = parser.parse_args(args)
41
42 #
43 assert os.path.exists(options.input)
44 output = options.output or tempfile.mktemp(suffix='.png')
45
46 command = [options.program,
47 options.input,
48 '-Tpng',
49 '-o', output]
50 subprocess.check_call(command)
51 assert os.path.exists(output)
52
53 if options.viewer:
54 subprocess.call([options.viewer, output])
55
56 if not options.output:
57 os.remove(output)
58
59
60 if __name__ == '__main__':
61 main()
62