def handle_additional_env()

in actions/secrets/__main__.py [0:0]


def handle_additional_env(user_data, env) -> [dict, list, list, list]:
    """
    Merge the old env and return new metadata

    Keyword arguments:
    key -- the key where merge the old and new env
    """
    old_env = env_to_dict(user_data, "userenv")

    # Identify added keys (exist in env but not in old_env)
    added_keys = [k for k in env if k not in old_env and env[k]]

    # Identify changed keys (exist in both but have different values)
    changed_keys = [k for k in env if k in old_env and old_env[k] != env[k] and env[k]]

    # merge old env and new env
    new_env = {
        # processed then: remove keys that doesn't exists in second dict
        **{k: v for k, v in old_env.items() if k not in env or env[k]},
        # processed first: keep keys if have a value
        **{k: v for k, v in env.items() if v}
    }

    # Identify removed keys (exist in old_env but not in new_env)
    removed_keys = [k for k in old_env if k not in new_env]

    user_data["userenv"] = dict_to_env(new_env)
    return user_data, added_keys, removed_keys, changed_keys