hotdoc: work around argparse syntax ambiguity

Fixes #5800
pull/6169/head
Mathieu Duponchelle 5 years ago committed by Jussi Pakkanen
parent 33a2e7c3d2
commit 4d51ac3220
  1. 22
      mesonbuild/modules/hotdoc.py

@ -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…
Cancel
Save