#!/usr/bin/env bash

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

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

# import golang vars
WITH_GOLANG=true
source $ROOT/hack/lib/vars.sh
source $ROOT/hack/lib/version.sh

function build::cache::one() {
    local os=$1
    local arch=$2

    local ldflags=$(lib::version::get_ldflags)

    cd ${ROOT}

    CGO_ENABLED=0 \
    GOPRIVATE=github.com/tidbcloud \
    GOCACHE="${VAR_GOCACHE}" \
    GOMODCACHE="${VAR_GOMODCACHE}" \
    GOPROXY="${VAR_GOPROXY}" \
    GOOS=${os} \
    GOARCH=${arch} \
    go build -v -ldflags "${ldflags}" ./...
}

function build::cache::all() {
    local platforms
    IFS=, read -ra platforms <<< "${VAR_PLATFORMS}"

    for platform in ${platforms[@]}; do
        case $platform in
        linux/arm64)
            build::cache::one linux arm64 ;;
        linux/amd64)
            build::cache::one linux amd64 ;;
        *)
            echo "unsupported platform ${platform}"
            exit 1
            ;;
        esac
    done
}

build::cache::all
