summaryrefslogtreecommitdiffstats
path: root/gen_settings.pl
diff options
context:
space:
mode:
Diffstat (limited to 'gen_settings.pl')
-rwxr-xr-xgen_settings.pl40
1 files changed, 40 insertions, 0 deletions
diff --git a/gen_settings.pl b/gen_settings.pl
index 2f94e49..2c97586 100755
--- a/gen_settings.pl
+++ b/gen_settings.pl
@@ -84,6 +84,23 @@ foreach my $target (sort keys %{$targetObj->getAllTargets()})
my $settingValue = $targetObj->getAttribute($target, $setting);
$row =~ s/MRW_${setting}/$settingValue/g;
}
+
+ #If there are [[ ]] expressions, evaluate them and replace the
+ #[[expression]] with the value
+ while ($row =~ /\[\[(.*?)\]\]/)
+ {
+ my $expr = $1;
+ my $value = evaluate($expr);
+
+ #Break the row apart, remove the [[ ]]s, and put the
+ #value in the middle when putting back together.
+ my $exprStart = index($row, $expr);
+ my $front = substr($row, 0, $exprStart - 2);
+ my $back = substr($row, $exprStart + length($expr) + 2);
+
+ $row = $front . $value . $back;
+ }
+
print $outFh $row;
}
last;
@@ -91,6 +108,29 @@ foreach my $target (sort keys %{$targetObj->getAllTargets()})
close $outFh;
}
+#Evaluate the expression passed in. Substitute any variables with
+#their values passed in on the command line.
+sub evaluate
+{
+ my $expr = shift;
+
+ #Put in the value for the variable.
+ for my $var (keys %exprVars)
+ {
+ $expr =~ s/$var/$exprVars{$var}/;
+ }
+
+ my $value = eval($expr);
+ if (not defined $value)
+ {
+ die "Invalid expression found: $expr\n";
+ }
+
+ #round it to an integer
+ $value = sprintf("%.0f", $value);
+ return $value;
+}
+
#Parse the variable=value string passed in from the
#command line and load it into %exprVars.
sub loadVars
OpenPOWER on IntegriCloud