diff options
author | Benjamin Schubert <contact@benschubert.me> | 2019-07-26 16:13:49 +0100 |
---|---|---|
committer | Benjamin Schubert <contact@benschubert.me> | 2019-07-29 10:42:02 +0100 |
commit | fed2996dd58733d5e048e401c40ccbd16a9bc6f2 (patch) | |
tree | 79d3f219789df862ef446607dbab1b846c3b897f /src/buildstream | |
parent | 0202301108feeecd52ccd6b23a87f7fb325fa36d (diff) | |
download | buildstream-fed2996dd58733d5e048e401c40ccbd16a9bc6f2.tar.gz |
optionpool: Use 'get_enum' for getting the option type
This improves the consistency of our error reporting
Diffstat (limited to 'src/buildstream')
-rw-r--r-- | src/buildstream/_options/optionpool.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/buildstream/_options/optionpool.py b/src/buildstream/_options/optionpool.py index d6b1b1614..a0730c617 100644 --- a/src/buildstream/_options/optionpool.py +++ b/src/buildstream/_options/optionpool.py @@ -22,6 +22,7 @@ import jinja2 from .._exceptions import LoadError, LoadErrorReason from ..node import MappingNode, SequenceNode, _assert_symbol_name +from ..types import FastEnum from .optionbool import OptionBool from .optionenum import OptionEnum from .optionflags import OptionFlags @@ -40,6 +41,15 @@ _OPTION_TYPES = { } +class OptionTypes(FastEnum): + BOOL = OptionBool.OPTION_TYPE + ENUM = OptionEnum.OPTION_TYPE + FLAG = OptionFlags.OPTION_TYPE + ELT_MASK = OptionEltMask.OPTION_TYPE + ARCH = OptionArch.OPTION_TYPE + OS = OptionOS.OPTION_TYPE + + class OptionPool(): def __init__(self, element_path): @@ -80,13 +90,8 @@ class OptionPool(): # Assert that the option name is a valid symbol _assert_symbol_name(option_name, "option name", ref_node=option_definition, allow_dashes=False) - opt_type_name = option_definition.get_str('type') - try: - opt_type = _OPTION_TYPES[opt_type_name] - except KeyError: - p = option_definition.get_scalar('type').get_provenance() - raise LoadError("{}: Invalid option type '{}'".format(p, opt_type_name), - LoadErrorReason.INVALID_DATA) + opt_type_name = option_definition.get_enum('type', OptionTypes) + opt_type = _OPTION_TYPES[opt_type_name.value] option = opt_type(option_name, option_definition, self) self._options[option_name] = option |