#!/bin/bash
echo update test start

function help_message()
{
    echo "Usage: $0 [options]
    -h: Print this help message.
    -s <test-server-addresss>: Use <test-server-address> for testing.
                  The building of tidb-server will be skiped if \"-s <tidb-server-path>\" is provided.
    -o <old-version>: Old Version.
    -n <new-version>: The Version you want test update.
    -a <old-tidb-commit-id>: You can replace tidb binary file by <tidb-commit-id>.
    -b <old-tikv-commit-id>: You can replace tikv binary file by <tikv-commit-id>.
    -c <old-pd-commit-id>: You can replace pd binary file by <pd-commit-id>.
    -x <new-tidb-commit-id>: You can replace tidb binary file by <tidb-commit-id>.
    -y <new-tikv-commit-id>: You can replace tikv binary file by <tikv-commit-id>.
    -z <new-pd-commit-id>: You can replace pd binary file by <pd-commit-id>.
    -p use commit id as PR commit id
"
}

old_tidb_commit_id=""
old_tikv_commit_id=""
old_pd_commit_id=""
new_tidb_commit_id=""
new_tikv_commit_id=""
new_pd_commit_id=""
old_version="v2.0.0"
new_version="latest"
host="127.0.0.1"
use_pr=0

while getopts "s:o:n:a:b:c:x:y:z:h:p" opt; do
    case $opt in
        s)
            host="$OPTARG"
            ;;
        o)
            old_version="$OPTARG"
            ;;
        n)
            new_version="$OPTARG"
            ;;
        a)
            old_tidb_commit_id="$OPTARG"
            ;;
        b)
            old_tikv_commit_id="$OPTARG"
            ;;
        c)
            old_pd_commit_id="$OPTARG"
            ;;
        x)
            new_tidb_commit_id="$OPTARG"
            ;;
        y)
            new_tikv_commit_id="$OPTARG"
            ;;
        z)
            new_pd_commit_id="$OPTARG"
            ;;
        p)
            use_pr=1
            ;;
        h)
            help_message
            exit 0
            ;;
        *)
            help_message 1>&2
            exit 1
            ;;
    esac
done


git clone https://github.com/pingcap/tidb-ansible.git
cp inventory.ini ./tidb-ansible/
cp bootstrap.yml ./tidb-ansible/
cp change_inventory.py ./tidb-ansible/
cp main.go ./tidb-ansible/
cd tidb-ansible

sed s/127.0.0.1/$host/g inventory.ini > inventory.tmp
cat inventory.tmp > inventory.ini
rm inventory.tmp

go get

if [ $use_pr = 1 ]; then
    go run main.go -pr=true -n=$new_version -o=$old_version -oldtidb=$old_tidb_commit_id -oldtikv=$old_tikv_commit_id -oldpd=$old_pd_commit_id -newtidb=$new_tidb_commit_id -newtikv=$new_tikv_commit_id -newpd=$new_pd_commit_id -h=$host
else
    go run main.go -n=$new_version -o=$old_version -oldtidb=$old_tidb_commit_id -oldtikv=$old_tikv_commit_id -oldpd=$old_pd_commit_id -newtidb=$new_tidb_commit_id -newtikv=$new_tikv_commit_id -newpd=$new_pd_commit_id -h=$host
fi
sed s/$host/127.0.0.1/g inventory.ini > inventory.tmp
cat inventory.tmp > inventory.ini
