|
@@ -94,6 +94,11 @@ class Command(object):
|
|
|
"""Get supported command line options."""
|
|
|
return self.option_list
|
|
|
|
|
|
+ def expanduser(self, value):
|
|
|
+ if isinstance(value, basestring):
|
|
|
+ return os.path.expanduser(value)
|
|
|
+ return value
|
|
|
+
|
|
|
def handle_argv(self, prog_name, argv):
|
|
|
"""Parses command line arguments from ``argv`` and dispatches
|
|
|
to :meth:`run`.
|
|
@@ -105,20 +110,19 @@ class Command(object):
|
|
|
and ``argv`` contains positional arguments.
|
|
|
|
|
|
"""
|
|
|
+
|
|
|
options, args = self.parse_options(prog_name, argv)
|
|
|
- for o in vars(options):
|
|
|
- v = getattr(options, o)
|
|
|
- if isinstance(v, basestring):
|
|
|
- setattr(options, o, os.path.expanduser(v))
|
|
|
- argv = map(lambda a: isinstance(a, basestring)
|
|
|
- and os.path.expanduser(a) or a, argv)
|
|
|
+ options = dict((k, self.expanduser(v))
|
|
|
+ for k, v in vars(options).iteritems()
|
|
|
+ if not k.startswith('_'))
|
|
|
+ argv = map(self.expanduser, argv)
|
|
|
if not self.supports_args and args:
|
|
|
sys.stderr.write(
|
|
|
"\nUnrecognized command line arguments: %s\n" % (
|
|
|
", ".join(args), ))
|
|
|
sys.stderr.write("\nTry --help?\n")
|
|
|
sys.exit(1)
|
|
|
- return self.run(*args, **vars(options))
|
|
|
+ return self.run(*args, **options)
|
|
|
|
|
|
def parse_options(self, prog_name, arguments):
|
|
|
"""Parse the available options."""
|
|
@@ -128,8 +132,7 @@ class Command(object):
|
|
|
print(self.version)
|
|
|
sys.exit(0)
|
|
|
parser = self.create_parser(prog_name)
|
|
|
- options, args = parser.parse_args(arguments)
|
|
|
- return options, args
|
|
|
+ return parser.parse_args(arguments)
|
|
|
|
|
|
def create_parser(self, prog_name):
|
|
|
return self.Parser(prog=prog_name,
|