diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-02-03 21:30:44 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-02-07 22:10:04 +0200 |
commit | 0204895143d4aacf143be952f962dc47e415c187 (patch) | |
tree | 32da3b7f923358b8416f554317adb6dc20041661 /mesonbuild | |
parent | 20c1cb7d02f77ada1446b592d8915ec4945994e3 (diff) | |
download | meson-0204895143d4aacf143be952f962dc47e415c187.zip meson-0204895143d4aacf143be952f962dc47e415c187.tar.gz meson-0204895143d4aacf143be952f962dc47e415c187.tar.bz2 |
Expose integer options to build option files.
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/coredata.py | 8 | ||||
-rw-r--r-- | mesonbuild/mintro.py | 2 | ||||
-rw-r--r-- | mesonbuild/optinterpreter.py | 11 |
3 files changed, 20 insertions, 1 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 0fdac8b..c96a09e 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -80,10 +80,16 @@ class UserBooleanOption(UserOption): class UserIntegerOption(UserOption): def __init__(self, name, description, min_value, max_value, value): - super().__init__(name, description, [True, False]) + super().__init__(name, description, None) self.min_value = min_value self.max_value = max_value self.set_value(value) + c = [] + if min_value is not None: + c.append('>=' + str(min_value)) + if max_value is not None: + c.append('<=' + str(max_value)) + self.choices = ', '.join(c) def set_value(self, newvalue): if isinstance(newvalue, str): diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py index aaaf8fc..8cf66af 100644 --- a/mesonbuild/mintro.py +++ b/mesonbuild/mintro.py @@ -139,6 +139,8 @@ def add_keys(optlist, options): elif isinstance(opt, coredata.UserComboOption): optdict['choices'] = opt.choices typestr = 'combo' + elif isinstance(opt, coredata.UserIntegerOption): + typestr = 'integer' elif isinstance(opt, coredata.UserArrayOption): typestr = 'array' else: diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py index df945ab..7eeaa48 100644 --- a/mesonbuild/optinterpreter.py +++ b/mesonbuild/optinterpreter.py @@ -85,6 +85,16 @@ def ComboParser(name, description, kwargs): raise OptionException('Combo choice elements must be strings.') return coredata.UserComboOption(name, description, choices, kwargs.get('value', choices[0])) +@permitted_kwargs({'value', 'min', 'max'}) +def IntegerParser(name, description, kwargs): + if 'value' not in kwargs: + raise OptionException('Integer option must contain value argument.') + return coredata.UserIntegerOption(name, + description, + kwargs.get('min', None), + kwargs.get('max', None), + kwargs['value']) + @permitted_kwargs({'value', 'choices'}) def string_array_parser(name, description, kwargs): if 'choices' in kwargs: @@ -105,6 +115,7 @@ def string_array_parser(name, description, kwargs): option_types = {'string': StringParser, 'boolean': BooleanParser, 'combo': ComboParser, + 'integer': IntegerParser, 'array': string_array_parser, } |