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