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

# stop daemon on exit
trap stop_daemon EXIT
function stop_daemon() {
    echo "stop daemon"
    killall mysqld
    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/dataflow-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/billing2-api -n nightly-ms 23337:18888 &
kubectl --context ${BASE_CTX} port-forward svc/billing2 -n nightly-ms 23338:18888 &

# start mysqld
which mysqld || (echo "mysqld not found" && exit 1)
mysqld --init-file=${config_path}/mysql-init.ini &

# start server
export AWS_PROFILE=dbaas-dev
export AWS_SDK_LOAD_CONFIG=1 # for sdk to load envs
cmd=${1:-"http"}
${script_path%/*}/bin/server ${cmd} --config ${config_path}/config.yaml
