aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonmain.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-03-04 17:49:32 +0200
committerGitHub <noreply@github.com>2019-03-04 17:49:32 +0200
commit94bb29738eb00f873c3467eba0bada4ca58d8ab9 (patch)
treed237f26f114e8b2b5fb350c97861350023e7a71c /mesonbuild/mesonmain.py
parent17ce9bc0e536067cfa1a05cb057014e3b1c2c449 (diff)
parent91918262e7c7bb0efea8900ad180194f9c059d4e (diff)
downloadmeson-94bb29738eb00f873c3467eba0bada4ca58d8ab9.zip
meson-94bb29738eb00f873c3467eba0bada4ca58d8ab9.tar.gz
meson-94bb29738eb00f873c3467eba0bada4ca58d8ab9.tar.bz2
Merge pull request #4992 from mensinda/rwCLI
rewriter: Add a CLI and docs
Diffstat (limited to 'mesonbuild/mesonmain.py')
-rw-r--r--mesonbuild/mesonmain.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py
index 516c411..822a943 100644
--- a/mesonbuild/mesonmain.py
+++ b/mesonbuild/mesonmain.py
@@ -18,6 +18,7 @@ import importlib
import traceback
import argparse
import codecs
+import shutil
from . import mesonlib
from . import mlog
@@ -29,9 +30,12 @@ from .wrap import wraptool
class CommandLineParser:
def __init__(self):
+ self.term_width = shutil.get_terminal_size().columns
+ self.formater = lambda prog: argparse.HelpFormatter(prog, max_help_position=int(self.term_width / 2), width=self.term_width)
+
self.commands = {}
self.hidden_commands = []
- self.parser = argparse.ArgumentParser(prog='meson')
+ self.parser = argparse.ArgumentParser(prog='meson', formatter_class=self.formater)
self.subparsers = self.parser.add_subparsers(title='Commands',
description='If no command is specified it defaults to setup command.')
self.add_command('setup', msetup.add_arguments, msetup.run,
@@ -52,26 +56,27 @@ class CommandLineParser:
help='Manage subprojects')
self.add_command('help', self.add_help_arguments, self.run_help_command,
help='Print help of a subcommand')
+ self.add_command('rewrite', lambda parser: rewriter.add_arguments(parser, self.formater), rewriter.run,
+ help='Modify the project definition')
# Hidden commands
- self.add_command('rewrite', rewriter.add_arguments, rewriter.run,
- help=argparse.SUPPRESS)
self.add_command('runpython', self.add_runpython_arguments, self.run_runpython_command,
help=argparse.SUPPRESS)
self.add_command('unstable-coredata', munstable_coredata.add_arguments, munstable_coredata.run,
help=argparse.SUPPRESS)
- def add_command(self, name, add_arguments_func, run_func, help):
+ def add_command(self, name, add_arguments_func, run_func, help, aliases=[]):
# FIXME: Cannot have hidden subparser:
# https://bugs.python.org/issue22848
if help == argparse.SUPPRESS:
- p = argparse.ArgumentParser(prog='meson ' + name)
+ p = argparse.ArgumentParser(prog='meson ' + name, formatter_class=self.formater)
self.hidden_commands.append(name)
else:
- p = self.subparsers.add_parser(name, help=help)
+ p = self.subparsers.add_parser(name, help=help, aliases=aliases, formatter_class=self.formater)
add_arguments_func(p)
p.set_defaults(run_func=run_func)
- self.commands[name] = p
+ for i in [name] + aliases:
+ self.commands[i] = p
def add_runpython_arguments(self, parser):
parser.add_argument('script_file')