#!/bin/bash
#set -ueax
# when you want to debug, please uncomment the above line and comment the following line.
set -uea

OLD_GOPATH=$GOPATH
PINGCAP_PATH="$(dirname $PWD)"
while [ "$(basename $PINGCAP_PATH)" != "pingcap" ]; do
    PINGCAP_PATH="$(dirname $PINGCAP_PATH)"
done
TIDB_VENDOR_PATH=$PINGCAP_PATH/tidb/vendor
TIDB_TEST_GOPATH=$PINGCAP_PATH/tidb-test/_vendor
TIDB_GOPATH=$PINGCAP_PATH/tidb_gopath

function rm_tidb_gopath() {
    rm -rf $TIDB_GOPATH
}

function mv_tidb_vendor() {
    mv -i $TIDB_VENDOR_PATH $PINGCAP_PATH/tidb/_vendor
}

function undo_mv_tidb_vendor() {
    mv -i $PINGCAP_PATH/tidb/_vendor $TIDB_VENDOR_PATH
}

function rm_tidb_test_vendor() {
    rm -rf $PINGCAP_PATH/tidb-test/vendor
}

function create_tidb_vendor() {
    cd $PINGCAP_PATH/tidb
    GO111MODULE=on go mod vendor -v
    cd -
}

function create_tidb_gopath() {
    rm -rf $TIDB_GOPATH
    mkdir -p $TIDB_GOPATH
    create_tidb_vendor
    cp -rf $TIDB_VENDOR_PATH $TIDB_GOPATH/src | true
}

function add_tidb_test_vendor_to_gopath() {
    export GOPATH=$TIDB_TEST_GOPATH:$GOPATH
}

function add_tidb_vendor_to_gopath() {
    create_tidb_gopath
    export GOPATH=$TIDB_GOPATH:$GOPATH
    mv_tidb_vendor
}

function undo_gopath() {
    export GOPATH=$OLD_GOPATH
}

function prepare_env {
    if [ "$1" == "tidb" ]; then
        add_tidb_vendor_to_gopath
    fi
    if [ "$2" == "tidb-test" ]; then
        add_tidb_test_vendor_to_gopath
    else
        rm -rf $PINGCAP_PATH/tidb-test/vendor && ln -s $TIDB_TEST_GOPATH/src $PINGCAP_PATH/tidb-test/vendor
    fi
}

function rm_tidb_gopath() {
    rm -rf $TIDB_GOPATH
}

function recover_env {
    undo_gopath
    undo_mv_tidb_vendor
    rm_tidb_test_vendor
    rm_tidb_gopath
}

function kill_proc_by_port() {
    if [ ! -z $1 ]; then
        kill $(lsof -t -i:$1)
    else 
        echo "please specify port number"
    fi
}


set +uea
trap 'set +e; PIDS=$(jobs -p); [ -n "$PIDS" ] && kill -9 $PIDS' EXIT

