#!/usr/bin/env bash
set -euo pipefail

# stop daemon on exit
trap stop_daemon EXIT
function stop_daemon() {
    echo "stop daemon"
    killall kubectl
}

script_path=$(realpath $(dirname $0))
config_path=${script_path%/*}/scripts/config
BASE_CTX=`kubectl config get-contexts --output=name | grep dev-base-us-west-2`

# get infra kubeconfig
if [ ! -f infra-dev-kubeconfig.yaml ]; then
    export AWS_PROFILE=dbaas-dev
    aws eks update-kubeconfig --name dev-base-us-west-2 --region us-west-2
    kubectl get secret --context ${BASE_CTX} serverless-infra-kubeconfig --template={{'.data.config'}} -n nightly-ms | base64 -d > infra-dev-kubeconfig.yaml;
    KUBECONFIG=infra-dev-kubeconfig.yaml kubectl config set-cluster infra --server=https://us-west-2.infra.shared.aws.tidbcloud.com:443
fi

# port-forward third services
kubectl --context ${BASE_CTX} port-forward svc/dbaas-core-svc-server-grpc -n nightly-ms 23333:8888 &
kubectl --context ${BASE_CTX} port-forward svc/serverless-svc-grpc -n nightly-ms 23334:10000 &
kubectl --context ${BASE_CTX} port-forward svc/account-acl-grpc -n nightly-ms 23335:10000 &
kubectl --context ${BASE_CTX} port-forward svc/account-provider-grpc -n nightly-ms 23336:10000 &
kubectl --context ${BASE_CTX} port-forward svc/dataservice-dataapi-service -n nightly-ms 23337:10000 &

# For oneconfig
kubectl config use-context ${BASE_CTX}
kubectl config set-context --current --namespace=nightly-ms

# start server
export AWS_PROFILE=dbaas-dev
export AWS_SDK_LOAD_CONFIG=1 # for sdk to load envs
cmd=${1:-"server"}

if [ "$cmd" == "server" ]; then
    ${script_path%/*}/build/server/server -local-mode -config-path=${config_path}/config.yaml
else
    ${script_path%/*}/build/server/worker -local-mode -config-path=${config_path}/config.yaml
fi
