summaryrefslogtreecommitdiff
path: root/src/buildstream/_options/optionpool.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_options/optionpool.py')
-rw-r--r--src/buildstream/_options/optionpool.py14
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