import os
import sys
import boto3
from dotenv import load_dotenv

# Get the directory that contains your script
current_dir = os.path.dirname(os.path.abspath(__file__))

# Get the parent directory
parent_dir = os.path.dirname(current_dir)

# Add the parent directory to sys.path
sys.path.insert(0, parent_dir)

environment = os.getenv("AWS_ENV", "dev")


def fetch_secret(secret_name:str, region_name:str, env_file_path:str):
    """Fetch the secret from AWS Secrets Manager and write it to the .env file."""
    print("Initializing session")
    session = boto3.session.Session()
    print("Session initialized")
    client = session.client(service_name="secretsmanager", region_name=region_name)
    print("Client initialized")

    try:
        response = client.get_secret_value(SecretId=secret_name)
    except Exception as e:
        print(f"Error retrieving secret: {e}")
        return f"Error retrieving secret: {e}"

    if "SecretString" in response:
        secret = response["SecretString"]
    else:
        secret = response["SecretBinary"]

    with open(env_file_path, "w") as env_file:
        env_file.write(secret)
        print("Secrets are added to the .env file.")

    if os.path.exists(env_file_path):
        print(f"The .env file is located at: {env_file_path}")
        load_dotenv()
        print("The .env file is loaded.")
    else:
        print(f"The .env file was not found at: {env_file_path}.")


ENV_FILE_PATH = os.path.abspath("../.env")

if os.path.exists(ENV_FILE_PATH):
    # Load default environment variables (.env)
    load_dotenv()
    print("Environment variables are already loaded.")
else:
    fetch_secret(
        f"promethai-{environment}-backend-secretso-promethaijs-dotenv",
        "eu-west-1",
        ENV_FILE_PATH,
    )
