#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/..; pwd -P)

source $ROOT/hack/lib/vars.sh
source $ROOT/hack/lib/image.sh

KIND=${KIND:-"$ROOT/bin/kind"}

push() {
    local targets=${@}

    lib::image::get_image_registry registry

    case $VAR_IMG_HUB in
    ecr)
        aws ecr get-login-password --region ${VAR_AWS_REGION} | docker login --username AWS --password-stdin ${registry}
        trap "docker logout https://${registry}" EXIT
        ;;
    esac

    for target in $targets; do
        lib::image::get_image image $target

        case $VAR_IMG_HUB in
        ecr)
            lib::image::get_image_repo repo $target

            if ! aws ecr describe-repositories --repository-name ${repo} --region ${VAR_AWS_REGION} >/dev/null 2>&1
            then
                aws ecr create-repository --repository-name ${repo} --region ${VAR_AWS_REGION}
            fi

            docker push ${image}
            echo "${image} pushed"
            ;;
        gcr)
            lib::image::get_image_repo repo $target
            docker push ${image}

            echo "${image} pushed"
        local)
    		${KIND} load docker-image --name shared-provider ${image}
            ;;
        *)
            docker push ${image}
            ;;
        esac
    done
}

push ${@}
