aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/msetup.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-05-13 10:36:58 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2018-10-04 09:40:21 -0400
commit37067a53c4b3b99982ef8e1f431ba0c9302b66e8 (patch)
tree7d3ebbb24b45bf6cfdb2a76a4dcdabf8808a346c /mesonbuild/msetup.py
parent5af2717e76015b47bfc2b11d4034099d9b62d978 (diff)
downloadmeson-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.py38
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