Ejemplo n.º 1
0
def run():

    plugin.import_all()

    parser = OptionParser(usage="%prog [options] input-location",
                          version=__version__)
    parser.set_defaults(verbose=True)
    parser.set_defaults(output="-")
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose", 
                      help="don't print status messages to stderr")
    parser.add_option("-D", "--debug",
                      action="append", dest="debugTags", 
                      help="turn on debugging of a particular type (try 'all')")
    #parser.add_option("-O", "--output", action="store", dest="output",
    #                  help="Save the output to this file (else stdout)")
    plugin.add_to_OptionParser(parser)
                      
    (options, args) = parser.parse_args()

    # feed the options back, somehow...
    #   plugin.options_from_OptionParser(options)  maybe?

    if options.debugTags:
        debugtools.tags.update(options.debugTags)
    verbose = options.verbose

    debug('cmdline', 'args:', args)
    
    plugins = plugin.combined(options)
    if plugins.can_run("system_test"):
        if plugins.system_test():
            sys.exit(0)
        else:
            sys.exit(1)

    if len(args) != 1:
        parser.print_help()
        sys.exit(1)

    input_filename = args[0]
    if input_filename == "-":
        input_stream = sys.stdin
    else:
        input_stream = open(input_filename, "r")
    input_text = input_stream.read()

    debug('cmdline', 'read %d bytes' % len(input_text))

    iproc = plugin.get_one_plugin(["parse"], options)
            
    try:
        doc = iproc.parse(input_text)
    except error.SyntaxError, e:
        err = ""
        err += e.message + "\n"
        err += e.illustrate_position()
        print >>sys.stderr, err
        return
Ejemplo n.º 2
0
    try:
        doc = iproc.parse(input_text)
    except error.SyntaxError, e:
        err = ""
        err += e.message + "\n"
        err += e.illustrate_position()
        print >>sys.stderr, err
        return

    for p in plugin.get_plugins(["transform"], options):
        doc = p.transform(doc)

    for p in plugin.get_plugins(["analyze"], options):
        report = p.analyze(doc)
        print "\nReport from %s plugin:" % p.id
        print report
        print

    out_stream = sys.stdout

    oproc = plugin.get_one_plugin(["serialize"], options)

    debug('cmdline', 'Output processor=', oproc)
    oproc.serialize(doc, out_stream)

if __name__ == "__main__":
    import doctest, sys
    doctest.testmod(sys.modules[__name__])

    run()