import os
from actions_logging.app_logging import logger
from github.env import get_required_env_var, exit_on_error_and_write_summary, write_github_env
from aws.env_info import get_env_region
from aws.constants import PRODUCTION, PROD_ENVS
from lambdas.lambda_info import get_lambda_name_and_tag


def main():
    try:
        deployed_artifact_version = os.getenv('DEPLOYED_ARTIFACT_VERSION', '')
        if deployed_artifact_version:
            logger.info(f"DEPLOYED_ARTIFACT_VERSION is empty or not exists. skipping")
            return
        logger.info("will get the current version of the lambda based on env name and service name and export it as DEPLOYED_ARTIFACT_VERSION")
        env_name = get_required_env_var('ENV_NAME')
        svc_name = get_required_env_var('SVC_NAME')
        region = get_env_region(env_name)
        lambda_env_name = env_name
        if env_name in PROD_ENVS:
            lambda_env_name = PRODUCTION
        lambda_name, lambda_version = get_lambda_name_and_tag(svc_name, lambda_env_name, region)
        logger.info(f"Current version of the lambda {lambda_name} is {lambda_version}, will export it as DEPLOYED_ARTIFACT_VERSION")
        write_github_env(lambda_version, "DEPLOYED_ARTIFACT_VERSION")
        logger.info(f"finished setting DEPLOYED_ARTIFACT_VERSION to {lambda_version}")
    except Exception as e:
        exit_on_error_and_write_summary(f"Failed to get and set current version of the lambda. Error: {e}")


if __name__ == '__main__':
    main()
