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