#!/usr/bin/env python3

import os
import argparse
from pathlib import Path

FILES_FIXED = []

def fix_tabs_in_file(file_path):
    """Replaces tab characters with two spaces in the specified file."""
    with open(file_path, "r", encoding="utf-8") as f:
        lines = f.readlines()

    if any('\t' in line for line in lines):
        fixed_lines = [line.replace('\t', '  ') for line in lines]
        with open(file_path, "w", encoding="utf-8") as f:
            f.writelines(fixed_lines)
        FILES_FIXED.append(str(file_path))

def find_yml_files(path):
    """Yield all .yml files under a given path recursively."""
    for file in path.rglob("*.yml"):
        if file.is_file():
            yield file

def main():
    parser = argparse.ArgumentParser(
        description="Fix tab characters in all .yml files under a given path (recursively)."
    )
    parser.add_argument(
        "path",
        nargs="?",
        default="./",
        help="Base path to search for .yml files (default: ./)"
    )
    args = parser.parse_args()

    base_path = Path(args.path).resolve()

    if not base_path.exists():
        print(f"❌ Path does not exist: {base_path}")
        exit(1)

    print(f"🔍 Searching for .yml files under: {base_path}\n")

    for yml_file in find_yml_files(base_path):
        fix_tabs_in_file(yml_file)

    if FILES_FIXED:
        print("✅ Fixed tab characters in the following files:")
        for f in FILES_FIXED:
            print(f"  - {f}")
    else:
        print("✅ No tabs found in any .yml files.")

if __name__ == "__main__":
    main()
