From 05ca91a0c7e928d1fd03002d97611b3084559d67 Mon Sep 17 00:00:00 2001 From: Benjamin Schubert Date: Thu, 18 Jul 2019 23:10:00 +0100 Subject: WIP --- src/buildstream/_options/optionpool.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/buildstream/_options/optionpool.py b/src/buildstream/_options/optionpool.py index 98e8393e6..ca3f52e0f 100644 --- a/src/buildstream/_options/optionpool.py +++ b/src/buildstream/_options/optionpool.py @@ -45,6 +45,7 @@ _OPTION_TYPES = { OptionTypes = enum.Enum("OptionTypes", {key: key for key in _OPTION_TYPES}, type=str) + class OptionPool(): def __init__(self, element_path): @@ -75,8 +76,17 @@ 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_enum('type', OptionTypes) - opt_type = _OPTION_TYPES[opt_type_name.value] + # opt_type_name = option_definition.get_enum('type', OptionTypes) + # opt_type = _OPTION_TYPES[opt_type_name.value] + + 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)) option = opt_type(option_name, option_definition, self) self._options[option_name] = option -- cgit v1.2.1