diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-05-13 10:36:58 -0400 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.com> | 2018-10-04 09:40:21 -0400 |
commit | 37067a53c4b3b99982ef8e1f431ba0c9302b66e8 (patch) | |
tree | 7d3ebbb24b45bf6cfdb2a76a4dcdabf8808a346c /mesonbuild/msetup.py | |
parent | 5af2717e76015b47bfc2b11d4034099d9b62d978 (diff) | |
download | meson-37067a53c4b3b99982ef8e1f431ba0c9302b66e8.zip meson-37067a53c4b3b99982ef8e1f431ba0c9302b66e8.tar.gz meson-37067a53c4b3b99982ef8e1f431ba0c9302b66e8.tar.bz2 |
Use a single ArgumentParser for all subcommands
This has the adventage that "meson --help" shows a list of all commands,
making them discoverable. This also reduce the manual parsing of
arguments to the strict minimum needed for backward compatibility.
Diffstat (limited to 'mesonbuild/msetup.py')
-rw-r--r-- | mesonbuild/msetup.py | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py index b07e7c4..1576556 100644 --- a/mesonbuild/msetup.py +++ b/mesonbuild/msetup.py @@ -19,7 +19,6 @@ import os.path import platform import cProfile as profile import argparse -import traceback from . import environment, interpreter, mesonlib from . import build @@ -27,8 +26,7 @@ from . import mlog, coredata from .mesonlib import MesonException from .wrap import WrapMode -def buildparser(): - parser = argparse.ArgumentParser(prog='meson') +def add_arguments(parser): coredata.register_builtin_arguments(parser) parser.add_argument('--cross-file', default=None, help='File describing cross compilation environment.') @@ -48,7 +46,6 @@ def buildparser(): 'is not working.') parser.add_argument('builddir', nargs='?', default=None) parser.add_argument('sourcedir', nargs='?', default=None) - return parser def wrapmodetype(string): try: @@ -193,35 +190,8 @@ class MesonApp: os.unlink(cdf) raise -def run(args): - args = mesonlib.expand_arguments(args) - options = buildparser().parse_args(args) +def run(options): coredata.parse_cmd_line_options(options) - try: - app = MesonApp(options) - except Exception as e: - # Log directory does not exist, so just print - # to stdout. - print('Error during basic setup:\n') - print(e) - return 1 - try: - app.generate() - except Exception as e: - if isinstance(e, MesonException): - mlog.exception(e) - # Path to log file - mlog.shutdown() - logfile = os.path.join(app.build_dir, environment.Environment.log_dir, mlog.log_fname) - mlog.log("\nA full log can be found at", mlog.bold(logfile)) - if os.environ.get('MESON_FORCE_BACKTRACE'): - raise - return 1 - else: - if os.environ.get('MESON_FORCE_BACKTRACE'): - raise - traceback.print_exc() - return 2 - finally: - mlog.shutdown() + app = MesonApp(options) + app.generate() return 0 |