#!/bin/bash

#记录开始时间
startTime=$(date +%s)

# 登录到目标环境
baseDir="/home/somuns/ci4s"
cd ${baseDir}

#build
# 默认参数
branch="master"
service="manage-front"
env="dev"

#
show_help() {
  echo "Usage: $0 [-b branch] [-s service] [-e environment]"
  echo
  echo "Options:"
  echo "  -b  Branch to deploy, default: master"
  echo "  -s  Service to deploy (manage-front, manage, front, all, system default: manage-front)"
  echo "  -e  Environment (e.g., dev, test, default: dev)"
  echo "  -h  Show this help message"
}

# 解析命令行选项
while getopts "b:s:e:h" opt; do
  case $opt in
    b) branch=$OPTARG ;;
    s) service=$OPTARG ;;
    e) env=$OPTARG ;;
    h) show_help; exit 0 ;;
    \?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;;
  esac
done

# 拉取指定分支的最新代码
echo "Checking out and pulling branch $branch..."

git stash
git checkout $branch
if [ $? -ne 0 ]; then
    echo "切换到分支 $branch 失败，请检查分支名称是否正确！"
    exit 1
fi

git stash
git pull origin $branch
if [ $? -ne 0 ]; then
    echo "拉取代码失败，请检查网络或联系管理员！"
    exit 1
fi

chmod +777 ${baseDir}/k8s/*.sh

valid_services=("manage-front" "manage" "front" "all" "auth" "gateway" "system")
if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then
  echo "Invalid service name: $service" >&2
  echo "Valid services are: ${valid_services[*]}"
  exit 1
fi

valid_envs=("dev" "test" "test1")
if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then
  echo "Invalid environment: $env" >&2
  echo "Valid environments are: ${valid_envs[*]}"
  exit 1
fi

echo "start build"
sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service}
if [ $? -ne 0 ]; then
  echo "Build failed"
  exit 1
fi
echo "build success"

# 部署
echo "start deploy"
sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env}
if [ $? -ne 0 ]; then
  echo "Deploy failed"
  exit 1
fi
echo "deploy success"

# 记录结束时间
endTime=$(date +%s)
# 计算运行时间
duration=$(( $endTime - $startTime ))
echo "编译发布总耗时: $duration 秒"