Commit eae0bb89 authored by w-e-w's avatar w-e-w

set_named_arg fuzzy option

parent 36d1fefc
...@@ -939,13 +939,14 @@ class ScriptRunner: ...@@ -939,13 +939,14 @@ class ScriptRunner:
except Exception: except Exception:
errors.report(f"Error running setup: {script.filename}", exc_info=True) errors.report(f"Error running setup: {script.filename}", exc_info=True)
def set_named_arg(self, args, script_name, arg_elem_id, value): def set_named_arg(self, args, script_name, arg_elem_id, value, fuzzy=False):
"""Locate an arg of a specific script in script_args and set its value """Locate an arg of a specific script in script_args and set its value
Args: Args:
args: all script args of process p, p.script_args args: all script args of process p, p.script_args
script_name: the name target script name to script_name: the name target script name to
arg_elem_id: the elem_id of the target arg arg_elem_id: the elem_id of the target arg
value: the value to set value: the value to set
fuzzy: if True, arg_elem_id can be a substring of the control.elem_id else exact match
Returns: Returns:
Updated script args Updated script args
when script_name in not found or arg_elem_id is not found in script controls, raise RuntimeError when script_name in not found or arg_elem_id is not found in script controls, raise RuntimeError
...@@ -955,7 +956,7 @@ class ScriptRunner: ...@@ -955,7 +956,7 @@ class ScriptRunner:
raise RuntimeError(f"script {script_name} not found") raise RuntimeError(f"script {script_name} not found")
for i, control in enumerate(script.controls): for i, control in enumerate(script.controls):
if arg_elem_id == control.elem_id: if arg_elem_id in control.elem_id if fuzzy else arg_elem_id == control.elem_id:
index = script.args_from + i index = script.args_from + i
if isinstance(args, tuple): if isinstance(args, tuple):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment