summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <contact@benschubert.me>2019-10-15 11:51:54 +0100
committerBenjamin Schubert <contact@benschubert.me>2019-10-16 13:52:55 +0100
commit0cc53801868a0b85c81bb68579153a04cb7a5faf (patch)
treeef1355c6e0fae77ae60e23a614c95391dded5627
parent1b92d90b5b95241e9c44d02a63713ca2de8a98f4 (diff)
downloadbuildstream-0cc53801868a0b85c81bb68579153a04cb7a5faf.tar.gz
_options/option.py: Pass the node instead of the str to 'transform'
This is in order to consolidate how we substitute variables. _project: use 'node_subst_vars' instead of '_subst_list' as the first one expects a node.
-rw-r--r--src/buildstream/_options/optionbool.py2
-rw-r--r--src/buildstream/_options/optionenum.py6
-rw-r--r--src/buildstream/_options/optionflags.py5
-rw-r--r--src/buildstream/_project.py2
4 files changed, 9 insertions, 6 deletions
diff --git a/src/buildstream/_options/optionbool.py b/src/buildstream/_options/optionbool.py
index af67df601..f91cb257d 100644
--- a/src/buildstream/_options/optionbool.py
+++ b/src/buildstream/_options/optionbool.py
@@ -37,7 +37,7 @@ class OptionBool(Option):
def load_value(self, node, *, transform=None):
if transform:
- self.set_value(transform(node.get_str(self.name)))
+ self.set_value(transform(node.get_scalar(self.name)))
else:
self.value = node.get_bool(self.name)
diff --git a/src/buildstream/_options/optionenum.py b/src/buildstream/_options/optionenum.py
index be9799acc..4a0941369 100644
--- a/src/buildstream/_options/optionenum.py
+++ b/src/buildstream/_options/optionenum.py
@@ -56,9 +56,11 @@ class OptionEnum(Option):
def load_value(self, node, *, transform=None):
value_node = node.get_scalar(self.name)
- self.value = value_node.as_str()
if transform:
- self.value = transform(self.value)
+ self.value = transform(value_node)
+ else:
+ self.value = value_node.as_str()
+
self.validate(self.value, value_node)
def set_value(self, value):
diff --git a/src/buildstream/_options/optionflags.py b/src/buildstream/_options/optionflags.py
index 0ce995709..e5217a718 100644
--- a/src/buildstream/_options/optionflags.py
+++ b/src/buildstream/_options/optionflags.py
@@ -58,9 +58,10 @@ class OptionFlags(Option):
def load_value(self, node, *, transform=None):
value_node = node.get_sequence(self.name)
- self.value = value_node.as_str_list()
if transform:
- self.value = [transform(x) for x in self.value]
+ self.value = [transform(x) for x in value_node]
+ else:
+ self.value = value_node.as_str_list()
self.value = sorted(self.value)
self.validate(self.value, value_node)
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index 7ba93bba4..54a011e0d 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -789,7 +789,7 @@ class Project():
output.options.load(options_node)
if self.junction:
# load before user configuration
- output.options.load_yaml_values(self.junction.options, transform=self.junction._subst_string)
+ output.options.load_yaml_values(self.junction.options, transform=self.junction.node_subst_vars)
# Collect option values specified in the user configuration
overrides = self._context.get_overrides(self.name)