from pathlib import Path
import sys


def matching_files(folder, suffix):
    """Sorted list of files in `folder` with the given extension."""
    return sorted(
        p for p in Path(folder).iterdir()
        if p.is_file() and p.suffix.lower() == suffix.lower()
    )


def planned_renames(folder, prefix, suffix):
    """Return a list of (old_path, new_path), computed, not applied."""
    plans = []
    for number, path in enumerate(matching_files(folder, suffix), start=1):
        new_name = f"{prefix}-{number:02d}{suffix.lower()}"
        plans.append((path, path.with_name(new_name)))
    return plans


def main():
    if len(sys.argv) < 4:
        print("Usage: python rename_files.py <folder> <prefix> <.ext> [--apply]")
        raise SystemExit(1)

    folder, prefix, suffix = sys.argv[1], sys.argv[2], sys.argv[3]
    apply = "--apply" in sys.argv[4:]

    plans = planned_renames(folder, prefix, suffix)
    if not plans:
        print("No matching files found.")
        return

    for old, new in plans:
        print(f"{old.name}  ->  {new.name}")
        if apply:
            old.rename(new)

    if apply:
        print(f"\nRenamed {len(plans)} files.")
    else:
        print(f"\n(dry run) {len(plans)} files would be renamed. "
              "Re-run with --apply to do it.")


if __name__ == "__main__":
    main()
