parent
33a2e7c3d2
commit
4d51ac3220
|
@ -81,12 +81,28 @@ class HotdocTargetBuilder:
|
|||
elif isinstance(value, list):
|
||||
# Do not do anything on empty lists
|
||||
if value:
|
||||
# https://bugs.python.org/issue9334 (from 2010 :( )
|
||||
# The syntax with nargs=+ is inherently ambiguous
|
||||
# A workaround for this case is to simply prefix with a space
|
||||
# every value starting with a dash
|
||||
escaped_value = []
|
||||
for e in value:
|
||||
if isinstance(e, str) and e.startswith('-'):
|
||||
escaped_value += [' %s' % e]
|
||||
else:
|
||||
escaped_value += [e]
|
||||
if option:
|
||||
self.cmd.extend([option] + value)
|
||||
self.cmd.extend([option] + escaped_value)
|
||||
else:
|
||||
self.cmd.extend(value)
|
||||
self.cmd.extend(escaped_value)
|
||||
else:
|
||||
self.cmd.extend([option, value])
|
||||
# argparse gets confused if value(s) start with a dash.
|
||||
# When an option expects a single value, the unambiguous way
|
||||
# to specify it is with =
|
||||
if isinstance(value, str):
|
||||
self.cmd.extend(['%s=%s' % (option, value)])
|
||||
else:
|
||||
self.cmd.extend([option, value])
|
||||
|
||||
def check_extra_arg_type(self, arg, value):
|
||||
value = getattr(value, 'held_object', value)
|
||||
|
|
Loading…
Reference in New Issue