from actions_logging.app_logging import logger
from github.env import write_github_env, exit_on_error_and_write_summary
from build_and_deploy.auto.export_build_vars import get_event_name_and_gh_context
from github.constants import PR_EVENT_NAME, WORKFLOW_DISPATCH_EVENT_NAME


def main():
    skipped_keys = [
        "ENV_NAME",
        "image_tags"
    ]

    event_name, context_json = get_event_name_and_gh_context()
    logger.info_green(f"event_name: {event_name}")
    logger.debug(f"context_json: {context_json}")
    if event_name == WORKFLOW_DISPATCH_EVENT_NAME:
        github_inputs = context_json.get('event', {}).get('inputs', {})
        for key in github_inputs:
            if key not in skipped_keys:
                logger.info_green(f'''echo "{key}={github_inputs[key]}" >> $GITHUB_ENV''')
                write_github_env(github_inputs[key], key)
    elif event_name == PR_EVENT_NAME:
        if not context_json.get('event', {}).get('pull_request', {}).get('merged', False):
            exit_on_error_and_write_summary("PR was closed without merging (GitHub actions doesn't have dedicated 'merged' event), aborting execution.")
    else:
        exit_on_error_and_write_summary(f"Error: event name {event_name} not supported")
    write_github_env(event_name, "EVENT_NAME")


if __name__ == '__main__':
    main()
