| 54 | class DependantScriptValuesProvider(ValuesProvider): |
| 55 | |
| 56 | def __init__(self, script, parameters_supplier, shell, process_invoker: ProcessInvoker) -> None: |
| 57 | pattern = re.compile('\${([^}]+)\}') |
| 58 | |
| 59 | search_start = 0 |
| 60 | script_template = '' |
| 61 | required_parameters = set() |
| 62 | |
| 63 | while search_start < len(script): |
| 64 | match = pattern.search(script, search_start) |
| 65 | if not match: |
| 66 | script_template += script[search_start:] |
| 67 | break |
| 68 | param_start = match.start() |
| 69 | if param_start > search_start: |
| 70 | script_template += script[search_start:param_start] |
| 71 | |
| 72 | param_name = match.group(1) |
| 73 | required_parameters.add(param_name) |
| 74 | |
| 75 | search_start = match.end() + 1 |
| 76 | |
| 77 | self._required_parameters = tuple(required_parameters) |
| 78 | self._script_template = script |
| 79 | self._parameters_supplier = parameters_supplier |
| 80 | self._shell = shell |
| 81 | self._process_invoker = process_invoker |
| 82 | |
| 83 | def get_required_parameters(self): |
| 84 | return self._required_parameters |