import yaml
import sys
import os
import requests
import json


def get_ms_name_from_yaml(file_path, key_name):
    try:
        with open(file_path, 'r') as yaml_file:
            data = yaml.safe_load(yaml_file)

            if key_name in data:
                return data[key_name]['ms_name']
            else:
                return f"Key '{key_name}' not found in the YAML data."
    except FileNotFoundError:
        return f"File '{file_path}' not found."
    except yaml.YAMLError as e:
        return f"Error parsing YAML: {e}"


def create_github_var(token, repo_owner, repo_name, var_name, var_value):
    url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/actions/variables"

    headers = {
        "Authorization": f"token {token}",
        "Accept": "application/vnd.github.v3+json"
    }

    secret_data = {
        "name": var_name,
        "value": var_value
    }

    secret_data_json = json.dumps(secret_data)

    response = requests.post(url, headers=headers, data=secret_data_json)

    if response.status_code == 201:
        print(f"Variable '{var_name}' created successfully.")
    elif response.status_code == 204:
        print(f"Variable '{var_name}' updated successfully.")
    else:
        print(f"Failed to create/update variable '{var_name}'. Status code: {response.status_code}")
        print(response.text)



if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python find_the_ms_name <repo_name>")
        sys.exit(1)

    variable_name = "SVC_NAME"
    owner_name = "perimeter-81"
    git_token = os.getenv("GLOBAL_CICD_GIT_TOKEN")
    file_path = "repos.yaml"
    repo_name = sys.argv[1]
    result = get_ms_name_from_yaml(file_path, repo_name)
    print(result)
    os.system(f"echo 'SVC_NAME={result}' >> $GITHUB_ENV")
    create_github_var(git_token, owner_name, repo_name, variable_name, result)
