import os
import yaml
import logging

# Configure logging
logging.basicConfig(level=logging.INFO)


def get_lambda_name(file_path, key):
    with open(file_path, 'r') as file:
        data = yaml.safe_load(file)
        return data.get(key)


def get_lambda_path(file_path, lambda_name):
    with open(file_path, 'r') as file:
        data = yaml.safe_load(file)
        for key, value in data.items():
            if value == lambda_name:
                return key
        return None


def main():
    lambda_map_path = os.getenv('LAMBDA_MAP')
    if not lambda_map_path:
        logging.warning("LAMBDA_MAP environment variable is not set.")
        return
    
    file_path = os.path.join(os.getcwd(), lambda_map_path)
    
    # if changed_lambda_dir is provided
    changed_lambda_dir = os.getenv('CHANGED_LAMBDA_DIR')
    if changed_lambda_dir:
        key = changed_lambda_dir.strip('/')
        lambda_name = get_lambda_name(file_path, key)
    else:
        lambda_name = os.getenv('LAMBDA_NAME')
        if not lambda_name:
            logging.error("Neither CHANGED_LAMBDA_DIR nor LAMBDA_NAME environment variables are set.")
            return

    if lambda_name:
        key = get_lambda_path(file_path, lambda_name)
        if key:
            os.system(f'echo "LAMBDA_PATH={key}" >> $GITHUB_ENV')
            os.system(f'echo "LAMBDA_NAME={lambda_name}" >> $GITHUB_ENV')
            logging.info(f"LAMBDA_PATH: {key}")
            logging.info(f"LAMBDA_NAME: {lambda_name}")
        else:
            logging.error(f"No lambda path found for lambda name '{lambda_name}' in file '{file_path}'.")
    else:
        logging.error("No lambda name found.")


if __name__ == "__main__":
    main()
