summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/analyze-kconfig.py4
-rw-r--r--lib/utils.py16
2 files changed, 20 insertions, 0 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index 04b8c7b..2223a4d 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -187,6 +187,10 @@ def main():
if args.boolean_parameters:
dfatool.utils.observations_enum_to_bool(observations, kconfig=True)
+ if args.param_shift:
+ param_shift = dfatool.cli.parse_param_shift(args.param_shift)
+ dfatool.utils.shift_param_in_observations(observations, param_shift)
+
by_name, parameter_names = dfatool.utils.observations_to_by_name(observations)
# Release memory
diff --git a/lib/utils.py b/lib/utils.py
index a8acb51..ed21f0f 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -403,6 +403,22 @@ def by_param_to_by_name(by_param: dict) -> dict:
return by_name
+def shift_param_in_observations(observations, parameter_shift):
+ for param_name, param_shift_function in parameter_shift:
+ if param_name == "*":
+ for observation in observations:
+ for param_name in observation["param"].keys():
+ observation["param"][param_name] = param_shift_function(
+ observation["param"][param_name]
+ )
+ else:
+ for observation in observations:
+ if observation["param"][param_name] is not None:
+ observation["param"][param_name] = param_shift_function(
+ observation["param"][param_name]
+ )
+
+
def shift_param_in_aggregate(aggregate, parameters, parameter_shift):
"""
Remove entries which do not have certain parameter values from `aggregate`.