in tools/infra_scripts/fix_builds.py [0:0]
def rename_files(root: Path, patterns, dry_run: bool, force: bool) -> int:
"""Rename multiple file name patterns under root.
patterns: iterable of (source_name, target_name) tuples
"""
renamed = 0
for src_name, dst_name in patterns:
for p in root.rglob(src_name):
if p.is_file():
target = p.with_name(dst_name)
if dry_run:
action = "replace" if (force and target.exists()) else "rename"
print(f"[dry-run] {action} {p} -> {target}")
continue
try:
if force:
os.replace(p, target) # overwrites if target exists
print(f"replaced {p} -> {target}")
renamed += 1
else:
if target.exists():
print(f"skip (target exists) {p} -> {target}", file=sys.stderr)
else:
p.rename(target)
print(f"renamed {p} -> {target}")
renamed += 1
except Exception as e:
print(f"error renaming {p} -> {target}: {e}", file=sys.stderr)
return renamed