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
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()