Mercurial > hg > config
annotate python/gview.py @ 929:7c4be71a560b default tip
remove old aliases
| author | Jeff Hammel <k0scist@gmail.com> | 
|---|---|
| date | Mon, 20 Oct 2025 15:22:19 -0700 | 
| parents | 5e8d3f68a997 | 
| children | 
| rev | line source | 
|---|---|
| 683 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 2 # -*- coding: utf-8 -*- | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 3 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 4 """ | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 5 view graphviz files | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 6 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 7 http://www.graphviz.org/ | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 8 """ | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 9 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 10 # imports | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 11 import argparse | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 12 import os | 
| 690 | 13 import shlex | 
| 683 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 14 import subprocess | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 15 import sys | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 16 import tempfile | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 17 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 18 __all__ = ['main'] | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 19 string = (str, unicode) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 20 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 21 class Parser(argparse.ArgumentParser): | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 22 """CLI option parser""" | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 23 def __init__(self): | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 24 argparse.ArgumentParser.__init__(self, description=__doc__) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 25 self.add_argument('input', | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 26 help='graphviz file to view') | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 27 self.add_argument('-o', '--output', dest='output', | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 28 help="path to save to") | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 29 self.add_argument('-e', '--program', dest='program', | 
| 686 | 30 default='fdp', | 
| 683 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 31 help="GraphViz program to invoke [DEFAULT: %(default)s]") | 
| 690 | 32 self.add_argument('-v', '--view', dest='viewer', default='feh -F', | 
| 683 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 33 help="viewer") | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 34 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 35 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 36 def main(args=sys.argv[1:]): | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 37 """CLI""" | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 38 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 39 # parse command line | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 40 parser = Parser() | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 41 options = parser.parse_args(args) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 42 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 43 # | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 44 assert os.path.exists(options.input) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 45 output = options.output or tempfile.mktemp(suffix='.png') | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 46 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 47 command = [options.program, | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 48 options.input, | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 49 '-Tpng', | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 50 '-o', output] | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 51 subprocess.check_call(command) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 52 assert os.path.exists(output) | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 53 | 
| 684 | 54 try: | 
| 55 if options.viewer: | |
| 690 | 56 viewer = shlex.split(options.viewer) | 
| 57 subprocess.call(viewer + [output]) | |
| 684 | 58 finally: | 
| 59 if not options.output: | |
| 60 os.remove(output) | |
| 683 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 61 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 62 | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 63 if __name__ == '__main__': | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 64 main() | 
| 
ce95c61cb435
add viewer for graphviz; silly, but effective
 Jeff Hammel <k0scist@gmail.com> parents: diff
changeset | 65 | 
