def rename_files()

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