author | Tero Marttila <terom@paivola.fi> |
Sun, 22 Dec 2013 14:25:35 +0200 | |
changeset 27 | 62159e5b6685 |
parent 25 | 538c02bd95e0 |
child 28 | 69e1b91cd83f |
permissions | -rw-r--r-- |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
CLI argument handling; common stuff: logging |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
|
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
5 |
import codecs |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
6 |
import grp |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
import logging |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
8 |
import optparse |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
9 |
import os |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
10 |
import pwd |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
11 |
import sys |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
import logging; log = logging.getLogger('pvl.args') |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
|
9
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
15 |
def parser (parser, setuid=None) : |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
Return an optparse.OptionGroup. |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
|
9
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
20 |
if setuid is None : |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
21 |
# autodetect: only if we will be capable of |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
22 |
# XXX: use linux capabilities? |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
23 |
setuid = (os.geteuid() == 0) |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
24 |
|
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
general = optparse.OptionGroup(parser, "General options") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
general.add_option('-q', '--quiet', dest='loglevel', action='store_const', const=logging.ERROR, help="Less output") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
general.add_option('-v', '--verbose', dest='loglevel', action='store_const', const=logging.INFO, help="More output") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
general.add_option('-D', '--debug', dest='loglevel', action='store_const', const=logging.DEBUG, help="Even more output") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
general.add_option('--log-file', help="Log to file") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
general.add_option('--debug-module', action='append', metavar='MODULE', |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
help="Enable logging for the given logger/module name") |
25
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
33 |
|
27
62159e5b6685
copypastasyntaxfix pvl.args
Tero Marttila <terom@paivola.fi>
parents:
25
diff
changeset
|
34 |
parser.add_option('-c', '--config', metavar='PATH', |
25
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
35 |
help="Read option defaults from config") |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
36 |
parser.add_option('--config-encoding', metavar='CHARSET', default='utf-8', |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
37 |
help="Unicode decoding for config file") |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
38 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
39 |
|
9
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
40 |
if setuid : |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
41 |
general.add_option('--uid', help="Change uid") |
5e9290c55d77
pvl.args: make setuid options optional
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
42 |
general.add_option('--gid', help="Change gid") |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
# defaults |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
parser.set_defaults( |
25
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
46 |
setuid = setuid, |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
logname = parser.prog, |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
loglevel = logging.WARN, |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
debug_module = [], |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
return general |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
def options (**options) : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
Synthensise options. |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
return optparse.Values(options) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
def apply_setid (options, rootok=None) : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
Drop privileges if running as root. |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
XXX: this feature isn't very useful (import-time issues etc), but in certain cases (syslog-ng -> python), |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
it's difficult to avoid this without some extra wrapper tool..? |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
# --uid -> pw |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
if not options.uid : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
pw = None |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
elif options.uid.isdigit() : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
pw = pwd.getpwuid(int(options.uid)) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
else : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
pw = pwd.getpwnam(options.uid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
# --gid -> gr |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
if not options.gid and not pw : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
gr = None |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
elif not options.gid : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
gr = grp.getgrgid(pw.pw_gid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
elif options.gid.isdigit() : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
gr = grp.getgrgid(str(options.gid)) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
else : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
gr = grp.getgrnam(options.gid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
if gr : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
# XXX: secondary groups? seem to get cleared |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
log.info("setgid: %s: %s", gr.gr_name, gr.gr_gid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
os.setgid(gr.gr_gid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
if pw : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
log.info("setuid: %s: %s", pw.pw_name, pw.pw_uid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
os.setuid(pw.pw_uid) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
elif os.getuid() == 0 : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
if rootok : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
log.info("running as root") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
else : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
log.error("refusing to run as root, use --uid 0 to override") |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
sys.exit(2) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
|
22
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
103 |
def apply_file (path=None, mode='r', charset=None) : |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
104 |
""" |
22
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
105 |
Open (unicode-enabled) file from path, with - using stdio. |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
106 |
""" |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
107 |
|
21
559a6ce73f40
pvl.args.apply_file: support -
Tero Marttila <terom@paivola.fi>
parents:
19
diff
changeset
|
108 |
if not path or path == '-' : |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
109 |
# use stdin/out based on mode |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
110 |
stream, func = { |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
111 |
'r': (sys.stdin, codecs.getreader), |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
112 |
'w': (sys.stdout, codecs.getwriter), |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
113 |
}[mode[0]] |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
114 |
|
22
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
115 |
if charset : |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
116 |
return func(charset)(stream) |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
117 |
else : |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
118 |
return stream |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
119 |
|
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
120 |
else : |
22
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
121 |
if charset : |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
122 |
return codecs.open(path, mode, charset) |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
123 |
else : |
3e93880d3a40
pvl.args: apply_file: default to no unicode..
Tero Marttila <terom@paivola.fi>
parents:
21
diff
changeset
|
124 |
return open(path, mode) |
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
125 |
|
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
126 |
def apply_files (paths, *args, **opts) : |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
127 |
""" |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
128 |
Open one or more files from given paths, defaulting to stdio. |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
129 |
""" |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
130 |
|
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
131 |
if paths : |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
132 |
return [apply_file(path, *args, **opts) for path in paths] |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
133 |
else: |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
134 |
return [apply_file(None, *args, **opts)] |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
135 |
|
25
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
136 |
import configobj |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
137 |
import copy |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
138 |
import optparse |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
139 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
140 |
class Options (object) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
141 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
142 |
Custom optparse.Values implementation. |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
143 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
144 |
Passed to OptionParser.parse_args(), called by Option.take_action(): |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
145 |
setattr(values, dest, ...) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
146 |
values.ensure_value(dest, ...) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
147 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
148 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
149 |
def __init__ (self, defaults={ }) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
150 |
self._defaults = defaults |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
151 |
self._options = { } |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
152 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
153 |
def __setattr__ (self, name, value) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
154 |
if name.startswith('_') : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
155 |
self.__dict__[name] = value |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
156 |
else : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
157 |
self._options[name] = value |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
158 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
159 |
def ensure_value (self, name, default) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
160 |
if name in self._options : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
161 |
pass |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
162 |
elif name in self._defaults : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
163 |
self._options[name] = copy.copy(self._defaults[name]) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
164 |
else : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
165 |
self._options[name] = default |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
166 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
167 |
return self._options[name] |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
168 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
169 |
def _merge (self, options) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
170 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
171 |
Merge in options from given Options. |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
172 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
173 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
174 |
# TODO: lists? |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
175 |
self._options.update(options._options) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
176 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
177 |
def __getattr__ (self, name) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
178 |
if name.startswith('_') : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
179 |
raise AttributeError(name) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
180 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
181 |
if name in self._options : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
182 |
return self._options[name] |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
183 |
elif name in self._defaults : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
184 |
return self._defaults[name] |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
185 |
else : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
186 |
raise AttributeError(name) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
187 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
188 |
def apply_config (options, parser, config, encoding=None) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
189 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
190 |
Load options from config. |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
191 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
192 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
193 |
import configobj |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
194 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
195 |
config = configobj.ConfigObj(config, |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
196 |
encoding = options.config_encoding if encoding is None else encoding, |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
197 |
) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
198 |
config_options = Options(options._defaults) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
199 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
200 |
# load scalars |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
201 |
for scalar in config.scalars : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
202 |
# option from config |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
203 |
option = parser._long_opt.get('--' + scalar) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
204 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
205 |
if not option : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
206 |
raise optparse.BadOptionError(scalar) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
207 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
208 |
# value from config |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
209 |
if option.takes_value() : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
210 |
value = config[scalar] |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
211 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
212 |
else : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
213 |
# ignore |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
214 |
value = None |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
215 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
216 |
# apply |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
217 |
option.process(scalar, value, config_options, parser) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
218 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
219 |
# apply in actual options |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
220 |
config_options._merge(options) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
221 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
222 |
return config_options |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
223 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
224 |
def parse (parser, argv) : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
225 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
226 |
Parse options, args from argv. |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
227 |
""" |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
228 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
229 |
options, args = parser.parse_args(argv[1:], values=Options(parser.defaults)) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
230 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
231 |
if options.config : |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
232 |
options = apply_config(options, parser, options.config) |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
233 |
|
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
234 |
return options, args |
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
235 |
|
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
236 |
def apply (options, logname=None, rootok=True) : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
237 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
238 |
Apply the optparse options. |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
239 |
""" |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
240 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
241 |
if logname : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
242 |
prefix = options.logname + ': ' |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
243 |
else : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
244 |
prefix = '' |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
245 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
246 |
# configure |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
247 |
logging.basicConfig( |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
248 |
# XXX: log Class.__init__ as Class, not __init__? |
19
c511078be51d
pvl.args: change logging format
Tero Marttila <terom@paivola.fi>
parents:
15
diff
changeset
|
249 |
format = prefix + '%(levelname)8s %(name)20s.%(funcName)s: %(message)s', |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
250 |
level = options.loglevel, |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
251 |
filename = options.log_file, |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
252 |
) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
253 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
254 |
# TODO: use --quiet for stdout output? |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
255 |
options.quiet = options.loglevel > logging.WARN |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
256 |
|
25
538c02bd95e0
pvl.args: new --config option, used by pvl.args.parse(...)
Tero Marttila <terom@paivola.fi>
parents:
22
diff
changeset
|
257 |
if options.setuid : |
10
08bb817a9966
pvl.args: fix optional setuid options
Tero Marttila <terom@paivola.fi>
parents:
9
diff
changeset
|
258 |
if options.uid or options.gid or not rootok : |
08bb817a9966
pvl.args: fix optional setuid options
Tero Marttila <terom@paivola.fi>
parents:
9
diff
changeset
|
259 |
# set uid/gid |
08bb817a9966
pvl.args: fix optional setuid options
Tero Marttila <terom@paivola.fi>
parents:
9
diff
changeset
|
260 |
apply_setid(options, rootok=rootok) |
1
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
261 |
|
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
262 |
# enable debugging for specific targets |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
263 |
for logger in options.debug_module : |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
264 |
logging.getLogger(logger).setLevel(logging.DEBUG) |
ce931075b69e
import pvl.args,invoke from pvl-verkko
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
265 |
|
15
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
266 |
def main (main) : |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
267 |
""" |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
268 |
Run given main func. |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
269 |
""" |
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
270 |
|
e699ed00fcf1
pvl.args: apply_file(path) and main(main)
Tero Marttila <terom@paivola.fi>
parents:
10
diff
changeset
|
271 |
sys.exit(main(sys.argv)) |