#! /usr/bin/env python3.12
import subprocess, os

def import_ssh_keys_to_agent(privat_key = str):
    try:
        run_add_key = subprocess.run( 
                            [ "/usr/bin/ssh-add","-q", privat_key],
                            shell=False,
                            text=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            timeout=10,)

    except subprocess.TimeoutExpired:
        print("\n","Timeout, No Import :", privat_key)
        return False
                        
#   print(run_add_key)
    if run_add_key.returncode == 0:
        return True
    else:
        return False


def check_key_exist(ssh_pub=str):
    if not os.path.exists(ssh_pub):
        return False
    run_check_key = subprocess.run( 
                            [ "/usr/bin/ssh-add","-L"],
                            shell=False,
                            text=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,)

    list_agent_pubs = str(run_check_key.stdout,encoding="utf-8").splitlines()
    read_input_pub = open(ssh_pub)
    READ_FILE_PUB = read_input_pub.read() 
    count=0
    for pub in list_agent_pubs:
        count = count +1
        if READ_FILE_PUB == pub + "\n":
            return True
    return False
        


if __name__ == "__main__":
    ssh_keys = [
        "/home/jonnybravo/.ssh/ansible-test",
        "/home/jonnybravo/.ssh/blu",
        "/home/jonnybravo/.ssh/gitea",
        "/home/jonnybravo/.ssh/gitlab_ed25519",
    ]

    for add_key in ssh_keys:
        if not os.path.exists(add_key):
            print("File", (add_key + ".pub"), "existiert nicht")
        else:
            if check_key_exist(ssh_pub=add_key + ".pub"):
                print(add_key, "ist bereits vorhanden")
            else:
                print(add_key, "wird hinzugefügt...")
                if import_ssh_keys_to_agent(privat_key=add_key):
                    print("Wurde hinzugefügt :", add_key)
