diff options
Diffstat (limited to 'src/buildstream/_options/optionpool.py')
-rw-r--r-- | src/buildstream/_options/optionpool.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/buildstream/_options/optionpool.py b/src/buildstream/_options/optionpool.py index d7541530b..98e8393e6 100644 --- a/src/buildstream/_options/optionpool.py +++ b/src/buildstream/_options/optionpool.py @@ -18,6 +18,8 @@ # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> # +import enum + import jinja2 from .._exceptions import LoadError, LoadErrorReason @@ -40,6 +42,9 @@ _OPTION_TYPES = { } +OptionTypes = enum.Enum("OptionTypes", {key: key for key in _OPTION_TYPES}, type=str) + + class OptionPool(): def __init__(self, element_path): @@ -70,13 +75,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(LoadErrorReason.INVALID_DATA, - "{}: Invalid option type '{}'".format(p, opt_type_name)) + 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 |