view python/gview.py @ 694:ebca6d85213a

File "/usr/lib/python3/dist-packages/IPython/config/__init__.py", line 16, in <module> from .application import * File "/usr/lib/python3/dist-packages/IPython/config/application.py", line 31, in <module> from IPython.config.configurable import SingletonConfigurable File "/usr/lib/python3/dist-packages/IPython/config/configurable.py", line 33, in <module> from IPython.utils.text import indent, wrap_paragraphs File "/usr/lib/python3/dist-packages/IPython/utils/text.py", line 28, in <module> from IPython.external.path import path File "/usr/lib/python3/dist-packages/IPython/external/path/__init__.py", line 2, in <module> from path import * File "/home/jhammel/python/path.py", line 25 print root(path) ^
author Jeff Hammel <k0scist@gmail.com>
date Wed, 09 Jul 2014 16:26:49 -0700
parents 5e8d3f68a997
children
line wrap: on
line source

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
view graphviz files

http://www.graphviz.org/
"""

# imports
import argparse
import os
import shlex
import subprocess
import sys
import tempfile

__all__ = ['main']
string = (str, unicode)

class Parser(argparse.ArgumentParser):
    """CLI option parser"""
    def __init__(self):
        argparse.ArgumentParser.__init__(self, description=__doc__)
        self.add_argument('input',
                          help='graphviz file to view')
        self.add_argument('-o', '--output', dest='output',
                          help="path to save to")
        self.add_argument('-e', '--program', dest='program',
                          default='fdp',
                          help="GraphViz program to invoke [DEFAULT: %(default)s]")
        self.add_argument('-v', '--view', dest='viewer', default='feh -F',
                          help="viewer")


def main(args=sys.argv[1:]):
    """CLI"""

    # parse command line
    parser = Parser()
    options = parser.parse_args(args)

    #
    assert os.path.exists(options.input)
    output = options.output or tempfile.mktemp(suffix='.png')

    command = [options.program,
               options.input,
               '-Tpng',
               '-o', output]
    subprocess.check_call(command)
    assert os.path.exists(output)

    try:
        if options.viewer:
            viewer = shlex.split(options.viewer)
            subprocess.call(viewer + [output])
    finally:
        if not options.output:
            os.remove(output)


if __name__ == '__main__':
  main()