terom@93: import argparse terom@93: import logging; log = logging.getLogger('qmsk.args') terom@93: import sys terom@93: terom@93: def parser (**opts): terom@93: parser = argparse.ArgumentParser(**opts) terom@93: terom@93: args = parser.add_argument_group("Generic options") terom@93: args.add_argument('-q', '--quiet', dest='log_level', action='store_const', const=logging.ERROR, terom@93: help="Less output") terom@93: args.add_argument('-v', '--verbose', dest='log_level', action='store_const', const=logging.INFO, terom@93: help="More output") terom@93: args.add_argument('-D', '--debug-all', dest='log_level', action='store_const', const=logging.DEBUG, terom@93: help="Most output") terom@93: terom@93: args.add_argument('-d', '--debug-module', dest='log_debug', action='append', terom@93: help="Debugging output for given module") terom@93: terom@93: parser.set_defaults( terom@93: log_level = logging.WARNING, terom@93: log_debug = [ ], terom@93: ) terom@93: terom@93: return parser terom@93: terom@93: def parse (parser, argv): terom@93: """ terom@93: Parse given sys.argv using the ArgumentParser returned by parser() terom@93: """ terom@93: terom@93: args = parser.parse_args(argv[1:]) terom@93: terom@93: logging.basicConfig( terom@93: format = "{levelname:<8} {name:>30}:{funcName:<20}: {message}", terom@93: style = '{', terom@93: level = args.log_level, terom@93: ) terom@93: terom@93: for logger in args.log_debug: terom@93: logging.getLogger(logger).setLevel(logging.DEBUG) terom@93: terom@93: log.debug(args) terom@93: terom@93: return args terom@93: terom@93: def main (main): terom@93: """ terom@93: Run given main(argv) which returns exit status. terom@93: """ terom@93: terom@93: sys.exit(main(sys.argv))