• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2
3from os import get_terminal_size
4from textwrap import wrap
5from mesonbuild import coredata
6from mesonbuild import optinterpreter
7
8(COLUMNS, _) = get_terminal_size()
9
10def describe_option(option_name: str, option_default_value: str,
11                    option_type: str, option_message: str) -> None:
12    print('name:    ' + option_name)
13    print('default: ' + option_default_value)
14    print('type:    ' + option_type)
15    for line in wrap(option_message, width=COLUMNS - 9):
16        print('         ' + line)
17    print('---')
18
19oi = optinterpreter.OptionInterpreter('')
20oi.process('meson_options.txt')
21
22for (name, value) in oi.options.items():
23    if isinstance(value, coredata.UserStringOption):
24        describe_option(name,
25                        value.value,
26                        'string',
27                        "You can type what you want, but make sure it makes sense")
28    elif isinstance(value, coredata.UserBooleanOption):
29        describe_option(name,
30                        'true' if value.value else 'false',
31                        'boolean',
32                        "You can set it to 'true' or 'false'")
33    elif isinstance(value, coredata.UserIntegerOption):
34        describe_option(name,
35                        str(value.value),
36                        'integer',
37                        "You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value))
38    elif isinstance(value, coredata.UserUmaskOption):
39        describe_option(name,
40                        str(value.value),
41                        'umask',
42                        "You can set it to 'preserve' or a value between '0000' and '0777'")
43    elif isinstance(value, coredata.UserComboOption):
44        choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
45        describe_option(name,
46                        value.value,
47                        'combo',
48                        "You can set it to any one of those values: " + choices)
49    elif isinstance(value, coredata.UserArrayOption):
50        choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
51        value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']'
52        describe_option(name,
53                        value,
54                        'array',
55                        "You can set it to one or more of those values: " + choices)
56    elif isinstance(value, coredata.UserFeatureOption):
57        describe_option(name,
58                        value.value,
59                        'feature',
60                        "You can set it to 'auto', 'enabled', or 'disabled'")
61    else:
62        print(name + ' is an option of a type unknown to this script')
63        print('---')
64