#!/usr/bin/env bash

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

# ---
# Global variables definitions.
# All variables should be in format VAR_XXX
# ---

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

# source only once
if [[ -z ${VAR_HAS_DEFINED+x} ]]; then
    readonly VAR_HAS_DEFINED=1
else
    return 0
fi

# VAR_ENV means environment of build
readonly VAR_ENV=${VAR_ENV:-"dev"}
# VAR_AWS_REGION means aws region config
readonly VAR_AWS_REGION=${VAR_AWS_REGION:-"us-east-1"}
# VAR_ALIYUN_REGION means aliyun region config
readonly VAR_ALIYUN_REGION=${VAR_ALIYUN_REGION:-"ap-southeast-1"}

# ACR_INSTANCE means aliyun acr instance name
readonly ACR_INSTANCE=$([ "$VAR_ENV" = "prod" ] && echo "tidbcloudprod" || echo "tidbcloud")

# VAR_IMG_HUB means default hub used by
# - ecr: aws image hub
# - acr: aliyun image hub
# - gcr: not supported now
# - local: for kind only
# - pingcap: for hub.pingcap.net
# - custom: read hub config from env
readonly VAR_IMG_HUB=${VAR_IMG_HUB:-"local"}

# VAR_IMG_REGISTRY is registry for custom hub
readonly VAR_IMG_REGISTRY=${VAR_IMG_REGISTRY:-"localhost"}

# VAR_IMG_PROJECT defines project of image
# It defines project field in format registry/project/name:version
readonly VAR_IMG_PROJECT=${VAR_IMG_PROJECT:-"dbaas"}

# VAR_IMG_PREFIX defines prefix of image
readonly VAR_IMG_PREFIX=${VAR_IMG_PREFIX:-"aws-shared-provider"}

# VAR_IMG_VERSION defines version of image
# Image version is generated by git default by overrided by this variable
readonly VAR_IMG_VERSION=${VAR_IMG_VERSION:-""}

# VAR_CACHE_DIR means dir to store cache files
readonly VAR_CACHE_DIR=${VAR_CACHE_DIR:-""${ROOT}/.cache}

# VAR_PRIVATE_REPO_DOWNLOAD_TYPE
# - ssh: use ssh agent to pull code
# - netrc: use ~/.netrc to pull code
readonly VAR_PRIVATE_REPO_DOWNLOAD_TYPE=${VAR_PRIVATE_REPO_DOWNLOAD_TYPE:-"ssh"}

# VAR_PLATFORMS defines platforms of build binary, values can be splited by comma
# - linux/amd64
# - linux/arm64
readonly VAR_PLATFORMS=${VAR_PLATFORMS:-"linux/amd64"}

# source golang related variables
readonly WITH_GOLANG=${WITH_GOLANG:-"false"}
if [[ $WITH_GOLANG == "true" ]]; then
    source ${ROOT}/hack/lib/vars_golang.sh
fi

# source kubeconfig related variables
readonly WITH_KUBECONFIG=${WITH_KUBECONFIG:-"false"}
if [[ $WITH_KUBECONFIG == "true" ]]; then
    source ${ROOT}/hack/lib/vars_kubeconfig.sh
fi
