#!/usr/bin/env python3
import os
import sys
import glob

def process_files(files, scheme):
    scheme_len = len(scheme)

    for filename in files:
        print(f"Processing file: {filename}")
        print(f"Against scheme: {scheme}")

        # Get the actual filename without the directory path
        base = os.path.basename(filename)

        name, ext = os.path.splitext(base)

        if scheme_len == len(name):
            new_name = ""
            for i in range(scheme_len):
                current_letter = scheme[i]
                if current_letter == "?":
                    pass
                elif current_letter == "!":
                    new_name += name[i]
                elif current_letter == name[i]:
                    new_name += current_letter
                else:
                    print(f"Mismatch at position {i}, skipping {filename}")
                    new_name = None
                    break
            if new_name:
                rename_file(filename, new_name, ext)
            else:
                print("No new name Generated. It is not supposed to do that")
                return

def rename_file(file, new_name, ext):
    dirname = os.path.dirname(file)   # correct: preserve folder
    old_base = os.path.basename(file)

    if old_base != new_name:
        new_filepath = os.path.join(dirname, new_name + ext)
        os.rename(file, new_filepath)
        print(f"Renamed '{old_base}' → '{new_name + ext}'")
    else:
        print(f"No renaming needed for '{old_base}'.")


def main():
    if len(sys.argv) < 2:
        print("Usage: scheme.py <scheme> [folder]")
        sys.exit(1)
    else:
        print("Usage: rename_filtered <scheme> [folder]")
        print()
        print("Example:")
        print("  Files in folder:")
        print("    myfile_E123.txt")
        print("    myfile_E456.txt")
        print("    myfile_E789.txt")
        print("    myfile_E2468.txt")
        print()
        print("  Run:")
        print("    rename_filtered \"????????E!!!\" ./")
        print()
        print("  Result:")
        print("    myfile_E123.txt → 123.txt")
        print("    myfile_E456.txt → 456.txt")
        print("    myfile_E789.txt → 789.txt")
        print("    myfile_E2468.txt → myfile_2468.txt")

        sys.exit(1)
    import subprocess
    subprocess.run(["python", "/home/honney/.bin/tracker.py", "add", "rename_filtered"])

    scheme = sys.argv[1]
    folder = sys.argv[2] if len(sys.argv) > 2 else "."

    # Get all files in the folder (assuming files are in the current directory by default)
    files = glob.glob(os.path.join(folder, "*"))

    # Run the renaming logic
    process_files(files, scheme)

if __name__ == "__main__":
    main()
