|
10 | 10 | def find_uses(obj) -> list[str]: |
11 | 11 | """Recursively find all 'uses' values in a YAML structure.""" |
12 | 12 | found = [] |
13 | | - if isinstance(obj, dict): |
14 | | - if isinstance(obj.get("steps"), list): |
15 | | - for step in obj["steps"]: |
16 | | - if isinstance(step, dict) and isinstance(step.get("uses"), str): |
17 | | - found.append(step["uses"]) |
18 | | - for value in obj.values(): |
19 | | - found.extend(find_uses(value)) |
20 | | - elif isinstance(obj, list): |
| 13 | + |
| 14 | + # Guard: Handle lists |
| 15 | + if isinstance(obj, list): |
21 | 16 | for item in obj: |
22 | 17 | found.extend(find_uses(item)) |
| 18 | + return found |
| 19 | + |
| 20 | + # Guard: Only process dicts from here |
| 21 | + if not isinstance(obj, dict): |
| 22 | + return found |
| 23 | + |
| 24 | + # Process steps if present |
| 25 | + if isinstance(obj.get("steps"), list): |
| 26 | + for step in obj["steps"]: |
| 27 | + if not isinstance(step, dict): |
| 28 | + continue |
| 29 | + if isinstance(step.get("uses"), str): |
| 30 | + found.append(step["uses"]) |
| 31 | + |
| 32 | + # Recurse into all dict values |
| 33 | + for value in obj.values(): |
| 34 | + found.extend(find_uses(value)) |
| 35 | + |
23 | 36 | return found |
24 | 37 |
|
25 | 38 |
|
|
0 commit comments