forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.7 KiB
63 lines
2.7 KiB
#!/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('---')
|
|
|