diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-09-07 19:03:33 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-09-07 19:05:38 +0300 |
commit | 6cf5cb58426c36d738a511c7f559cddc175bf816 (patch) | |
tree | 9de9d9c685b0828910f7fd8b672c706a17f75279 /mesonbuild/mesonmain.py | |
parent | 9361666bd832132346b3a1195d86ad479a9a17b5 (diff) | |
download | meson-6cf5cb58426c36d738a511c7f559cddc175bf816.zip meson-6cf5cb58426c36d738a511c7f559cddc175bf816.tar.gz meson-6cf5cb58426c36d738a511c7f559cddc175bf816.tar.bz2 |
wrap-mode: Make the error output more useful
Now it errors out while displaying the possible options
See: https://bugs.python.org/issue25061 for native support
Diffstat (limited to 'mesonbuild/mesonmain.py')
-rw-r--r-- | mesonbuild/mesonmain.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index ab14b15..ec2bc58 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -63,6 +63,14 @@ add_builtin_argument('warnlevel', dest='warning_level') add_builtin_argument('stdsplit', action='store_false') add_builtin_argument('errorlogs', action='store_false') +def wrapmodetype(string): + try: + return getattr(WrapMode, string) + except AttributeError: + msg = ', '.join([t.name.lower() for t in WrapMode]) + msg = 'invalid argument {!r}, use one of {}'.format(string, msg) + raise argparse.ArgumentTypeError(msg) + parser.add_argument('--cross-file', default=None, help='File describing cross compilation environment.') parser.add_argument('-D', action='append', dest='projectoptions', default=[], metavar="option", @@ -71,7 +79,7 @@ parser.add_argument('-v', '--version', action='version', version=coredata.version) # See the mesonlib.WrapMode enum for documentation parser.add_argument('--wrap-mode', default=WrapMode.default, - type=lambda t: getattr(WrapMode, t), choices=WrapMode, + type=wrapmodetype, choices=WrapMode, help='Special wrap mode to use') parser.add_argument('directories', nargs='*') |