From 1c48cc08e09b1ea860a4972b752d4f053433fa6f Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Thu, 15 Mar 2018 16:19:13 -0700 Subject: mconf: accept -- options like `meson` does I'm not really happy about this to be honest, I don't like having both -- and -D options, I think it's stupid to have two ways to do exactly the same thing, especially since we then have to validate that someone hasn't passed the argument both ways. However, other people want this, so here it is. Fixes #969 --- mesonbuild/mconf.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'mesonbuild/mconf.py') diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py index cadd306..9a11332 100644 --- a/mesonbuild/mconf.py +++ b/mesonbuild/mconf.py @@ -19,6 +19,7 @@ from . import (coredata, mesonlib, build) def buildparser(): parser = argparse.ArgumentParser(prog='meson configure') + coredata.register_builtin_arguments(parser) parser.add_argument('-D', action='append', default=[], dest='sets', help='Set an option to the given value.') @@ -28,6 +29,19 @@ def buildparser(): return parser +def filter_builtin_options(args, original_args): + """Filter out any args passed with -- instead of -D.""" + for arg in original_args: + if not arg.startswith('--') or arg == '--clearcache': + continue + name = arg.lstrip('--').split('=', 1)[0] + if any([a.startswith(name + '=') for a in args.sets]): + raise mesonlib.MesonException( + 'Got argument {0} as both -D{0} and --{0}. Pick one.'.format(name)) + args.sets.append('{}={}'.format(name, getattr(args, name))) + delattr(args, name) + + class ConfException(mesonlib.MesonException): pass @@ -229,6 +243,7 @@ def run(args): if not args: args = [os.getcwd()] options = buildparser().parse_args(args) + filter_builtin_options(options, args) if len(options.directory) > 1: print('%s ' % args[0]) print('If you omit the build directory, the current directory is substituted.') -- cgit v1.1