qmsk/args.py
changeset 93 7ee3a6608406
equal deleted inserted replaced
92:e5799432071c 93:7ee3a6608406
       
     1 import argparse
       
     2 import logging; log = logging.getLogger('qmsk.args')
       
     3 import sys
       
     4 
       
     5 def parser (**opts):
       
     6     parser = argparse.ArgumentParser(**opts)
       
     7 
       
     8     args = parser.add_argument_group("Generic options")
       
     9     args.add_argument('-q', '--quiet',      dest='log_level', action='store_const', const=logging.ERROR,
       
    10             help="Less output")
       
    11     args.add_argument('-v', '--verbose',    dest='log_level', action='store_const', const=logging.INFO,
       
    12             help="More output")
       
    13     args.add_argument('-D', '--debug-all',  dest='log_level', action='store_const', const=logging.DEBUG,
       
    14             help="Most output")
       
    15 
       
    16     args.add_argument('-d', '--debug-module',   dest='log_debug', action='append',
       
    17             help="Debugging output for given module")
       
    18 
       
    19     parser.set_defaults(
       
    20             log_level       = logging.WARNING,
       
    21             log_debug       = [ ],
       
    22     )
       
    23 
       
    24     return parser
       
    25 
       
    26 def parse (parser, argv):
       
    27     """
       
    28         Parse given sys.argv using the ArgumentParser returned by parser()
       
    29     """
       
    30 
       
    31     args = parser.parse_args(argv[1:])
       
    32 
       
    33     logging.basicConfig(
       
    34             format      = "{levelname:<8} {name:>30}:{funcName:<20}: {message}",
       
    35             style       = '{',
       
    36             level       = args.log_level,
       
    37     )
       
    38 
       
    39     for logger in args.log_debug:
       
    40         logging.getLogger(logger).setLevel(logging.DEBUG)
       
    41     
       
    42     log.debug(args)
       
    43 
       
    44     return args
       
    45 
       
    46 def main (main):
       
    47     """
       
    48         Run given main(argv) which returns exit status.
       
    49     """
       
    50 
       
    51     sys.exit(main(sys.argv))