1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
from MgaRepo import SilentError, Error, config
import sys, os
import urllib.parse
import optparse
__all__ = ["OptionParser", "do_command", "default_parent"]
class CapitalizeHelpFormatter(optparse.IndentedHelpFormatter):
def format_usage(self, usage):
return optparse.IndentedHelpFormatter \
.format_usage(self, usage).capitalize()
def format_heading(self, heading):
return optparse.IndentedHelpFormatter \
.format_heading(self, heading).capitalize()
class OptionParser(optparse.OptionParser):
def __init__(self, usage=None, help=None, **kwargs):
if not "formatter" in kwargs:
kwargs["formatter"] = CapitalizeHelpFormatter()
optparse.OptionParser.__init__(self, usage, **kwargs)
self._overload_help = help
def format_help(self, formatter=None):
if self._overload_help:
return self._overload_help
else:
return optparse.OptionParser.format_help(self, formatter)
def error(self, msg):
raise Error(msg)
def do_command(parse_options_func, main_func):
try:
opt = parse_options_func()
main_func(**opt.__dict__)
except SilentError:
sys.exit(1)
except Error as e:
sys.stderr.write("error: %s\n" % str(e))
sys.exit(1)
except KeyboardInterrupt:
sys.stderr.write("interrupted\n")
sys.stderr.flush()
sys.exit(1)
def default_parent(url):
if url.find("://") == -1:
default_parent = config.get("global", "default_parent")
if not default_parent:
raise Error("received a relative url, " \
"but default_parent was not setup")
parsed = list(urllib.parse.urlparse(default_parent))
parsed[2] = os.path.normpath(parsed[2] + "/" + url)
url = urllib.parse.urlunparse(parsed)
return url
# vim:et:ts=4:sw=4
|