#!/bin/sh

# Prerequisite:
# 0. prepare fe, tiup-opts, packages folder, tiem project and golang installed
# 1. sudo - pre # create a pre user if not created before
# 2. Ask the front end colleagues for the new package(release.tar.gz) url, download it and put it some where in the repo machine, i.e., /home/pre/fe/release.tar.gz
# 3. Put current script in the root path of the pre user, i.e. /home/pre
    # Example command:
        # sh pre.sh /home/pre tiem sprint9 fe/release.tar.gz tiup-opts 1.0.0-beta.12

if [ $# -ne 6 ]
then
    echo "usage: $0 <root-path> <tiem-folder> <branch> <front-end-package-path> <opts-folder> <version>"
    exit
fi

ROOT_PATH=$1
REPO_PATH=${ROOT_PATH}/tiup-repo
TIEM_FOLDER=${ROOT_PATH}/$2
BRANCH=$3
FE_PACKAGE_PATH=${ROOT_PATH}/$4
OPTS_FOLDER=${ROOT_PATH}/$5
VERSION=$6

echo "##### remove repo ${REPO_PATH} started #####"
rm -rf ${REPO_PATH}
echo "##### remove repo ${REPO_PATH} finished #####"
echo

echo "##### init repo ${REPO_PATH} started #####"
tiup mirror init ${REPO_PATH}
echo "##### init repo ${REPO_PATH} finished #####"
echo

echo "##### set mirror to repo ${REPO_PATH} started #####"
tiup mirror set ${REPO_PATH}
echo "##### set mirror to repo ${REPO_PATH} finished #####"
echo

echo "##### remove old private.json started #####"
rm -f ${ROOT_PATH}/.tiup/keys/private.json
echo "##### remove old private.json finished #####"
echo

echo "##### set owner started #####"
cd tiup-opts
sh set_owner.sh
echo "##### set owner finished #####"
echo
echo "##### The em repo ${REPO_PATH} has been successfully reset, now you can use update_em_repo.sh to push and update the repo #####"

FE_FOLDER=$(dirname $FE_PACKAGE_PATH)
FE_PACKAGE_BASE_NAME=$(basename $FE_PACKAGE_PATH)

echo "##### make TiEM binary started #####"
cd $TIEM_FOLDER
git pull
git checkout $BRANCH && git pull
make swag
make
echo "##### make TiEM binary finished #####"

echo "##### copy front end started #####"
cd $FE_FOLDER
tar zvxf $FE_PACKAGE_BASE_NAME
cd $OPTS_FOLDER/nginx-1.20.1/html
rm -rf assets/
rm -rf background/
rm -rf img/
rm -f index.html
rm -rf logo
cp -r $FE_FOLDER/dist/* .
cd $OPTS_FOLDER/nginx-1.20.1
rm -f nginx.tar.gz
tar -zcvf nginx.tar.gz *
echo "##### copy front end finished #####"

echo "##### copy cluster-server started #####"
cd $OPTS_FOLDER/cluster-server
rm -rf *
cp $TIEM_FOLDER/bin/cluster-server .
mkdir sqls
cp $TIEM_FOLDER/scripts/* sqls/
tar -zcvf cluster-server.tar.gz *
echo "##### copy cluster-server finished #####"

echo "##### copy openapi-server started #####"
cd $OPTS_FOLDER/openapi-server
rm -rf *
mkdir resource
cp $TIEM_FOLDER/resource/hostInfo_template.xlsx resource/
cp $TIEM_FOLDER/bin/openapi-server .
tar -zcvf openapi-server.tar.gz *
echo "##### copy openapi-server finished #####"

echo "##### copy file-server started #####"
cd $OPTS_FOLDER/file-server
rm -rf *
cp $TIEM_FOLDER/bin/file-server .
tar -zcvf file-server.tar.gz *
echo "##### copy file-server finished #####"

echo "##### generate publish script started #####"
cd $OPTS_FOLDER
rm -f tiup_publish_$VERSION.sh
cp tiup_publish_template.sh tiup_publish_$VERSION.sh
sed -i "s/{version}/$VERSION/g" tiup_publish_$VERSION.sh
echo "##### generate publish script finished #####"

echo "##### cp tiup binary started #####"
cd ${ROOT_PATH}
cp $OPTS_FOLDER/tiup-linux-amd64/tiup-linux-amd64.tar.gz $REPO_PATH
echo "##### cp tiup binary finished #####"

echo "##### cp scripts and configs started #####"
cd ${ROOT_PATH}
cp $OPTS_FOLDER/src/install.sh $REPO_PATH
cp $OPTS_FOLDER/src/uninstall.sh $REPO_PATH
cp $OPTS_FOLDER/src/set_owner.sh $REPO_PATH
cp $OPTS_FOLDER/src/update.sh $REPO_PATH
cp $OPTS_FOLDER/src/prepare_upgrade.sh $REPO_PATH
cp $OPTS_FOLDER/src/config_template.yaml $REPO_PATH
mkdir -p $REPO_PATH/tools
cp $OPTS_FOLDER/src/cfssl $REPO_PATH/tools
cp $OPTS_FOLDER/src/cfssljson $REPO_PATH/tools
mkdir -p $REPO_PATH/configs
cp $OPTS_FOLDER/src/ca-config.json $REPO_PATH/configs
cp $OPTS_FOLDER/src/ca-csr.json $REPO_PATH/configs
cp $OPTS_FOLDER/src/server.json $REPO_PATH/configs
echo "##### cp scripts and configs finished #####"

echo "##### publish online repo started #####"
cd $OPTS_FOLDER
sh tiup_publish_$VERSION.sh
echo "##### publish online repo finished, set /home/tiup-repo as mirror #####"

echo "##### package em ${ROOT_PATH}/packages/em-enterprise-server-v${VERSION}-linux-amd64-pre.tar.gz started #####"
cd ${ROOT_PATH}
rm -f ${ROOT_PATH}/packages/em-enterprise-server-v$VERSION-linux-amd64-pre.tar.gz
cp -r tiup-repo em-enterprise-server-v$VERSION-linux-amd64
rm -rf em-enterprise-server-v$VERSION-linux-amd64/commits
tar -zcvf em-enterprise-server-v$VERSION-linux-amd64-pre.tar.gz em-enterprise-server-v$VERSION-linux-amd64
rm -rf em-enterprise-server-v$VERSION-linux-amd64
mv em-enterprise-server-v$VERSION-linux-amd64-pre.tar.gz packages/
echo "##### package em ${ROOT_PATH}/packages/em-enterprise-server-v${VERSION}-linux-amd64-pre.tar.gz finished #####"
