diff options
author | Eric Engestrom <[email protected]> | 2019-01-17 18:04:42 +0000 |
---|---|---|
committer | Eric Engestrom <[email protected]> | 2019-02-07 13:22:41 +0000 |
commit | 00be88aab8d5416e6e05f3bc46c51f05e7cd5130 (patch) | |
tree | 6bfef3cadc591efde811f1665d50c27d20757349 /bin | |
parent | d43ec104b7487d3a8930c0d1cd2a2732967f6275 (diff) |
meson: add script to print the options before configuring a builddir
Signed-off-by: Eric Engestrom <[email protected]>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/meson-options.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bin/meson-options.py b/bin/meson-options.py new file mode 100755 index 00000000000..e22aef54b2f --- /dev/null +++ b/bin/meson-options.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 + +from os import get_terminal_size +from textwrap import wrap +from mesonbuild import coredata +from mesonbuild import optinterpreter + +(COLUMNS, _) = get_terminal_size() + +def describe_option(option_name: str, option_default_value: str, + option_type: str, option_message: str) -> None: + print('name: ' + option_name) + print('default: ' + option_default_value) + print('type: ' + option_type) + for line in wrap(option_message, width=COLUMNS - 9): + print(' ' + line) + print('---') + +oi = optinterpreter.OptionInterpreter('') +oi.process('meson_options.txt') + +for (name, value) in oi.options.items(): + if isinstance(value, coredata.UserStringOption): + describe_option(name, + value.value, + 'string', + "You can type what you want, but make sure it makes sense") + elif isinstance(value, coredata.UserBooleanOption): + describe_option(name, + 'true' if value.value else 'false', + 'boolean', + "You can set it to 'true' or 'false'") + elif isinstance(value, coredata.UserIntegerOption): + describe_option(name, + str(value.value), + 'integer', + "You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value)) + elif isinstance(value, coredata.UserUmaskOption): + describe_option(name, + str(value.value), + 'umask', + "You can set it to 'preserve' or a value between '0000' and '0777'") + elif isinstance(value, coredata.UserComboOption): + choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' + describe_option(name, + value.value, + 'combo', + "You can set it to any one of those values: " + choices) + elif isinstance(value, coredata.UserArrayOption): + choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']' + value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']' + describe_option(name, + value, + 'array', + "You can set it to one or more of those values: " + choices) + elif isinstance(value, coredata.UserFeatureOption): + describe_option(name, + value.value, + 'feature', + "You can set it to 'auto', 'enabled', or 'disabled'") + else: + print(name + ' is an option of a type unknown to this script') + print('---') |