#!/bin/bash

# This shell is executed before docker build.
# 选择要更新的软件
# 下载软件
echo "请选择一个选项："
echo "1. kami_frontend"
echo "2. kami_backend"
echo "3. kami_boss"
echo "4. kami_merchant"
echo "5. kami_shop"
echo "6. kami_gateway"
echo "7. kami_agent"

read -p "请选择对应的应用：" choice
# 选择下选项
if [ "$choice" -lt 1 ] || [ "$choice" -gt 7 ]; then
  echo "无效的选择"
  exit 1
fi

repository=""

case $choice in
1)
  echo "正在打包kami_frontend..."
  # 在这里执行与选项1相关的操作
  repository="kami_frontend"
  ;;
2)
  echo "正在打包kami_backend..."
  # 在这里执行与选项2相关的操作
  repository="kami_backend"
  ;;
3)
  echo "正在打包kami_boss..."
  # 在这里执行与选项3相关的操作
  repository="kami_boss"
  ;;
4)
  echo "正在打包kami_merchant..."
  # 在这里执行与选项4相关的操作
  repository="kami_merchant"
  ;;
5)
  echo "正在打包kami_shop..."
  # 在这里执行与选项5相关的操作
  repository="kami_shop"
  ;;
6)
  echo "正在打包kami_gateway..."
  # 在这里执行与选项6相关的操作
  repository="kami_gateway"
  ;;
7)
  echo "正在打包kami_agent..."
  # 在这里执行与选项7相关的操作
  repository="kami_agent"
  ;;
*)
  echo "选项不正确..."
  exit 0
  ;;
esac

if [ -z "$repository" ]; then
  echo "未选择软件..."
  exit 0
fi

# 如果当前文件夹不存在，拉取资源
if [ ! -d "$repository" ]; then
  echo "克隆代码..."
  git clone git@121.37.253.228:sunxiaolong/$repository.git
fi

# shellcheck disable=SC2164
cd $repository
git checkout master
git pull

# 如果当前容器存在，则停止并删除，并且当前选择打包的是kami_gateway
# shellcheck disable=SC2143
if [ "$(docker ps -a | grep $repository)" ] && [ $repository == "kami_gateway" ]; then
  echo "停止并删除容器..." $repository
  docker stop $repository && docker rm $repository
fi

if [ $repository == "kami_gateway" ]; then
  # 关掉docker中所有其他的容器
  echo "关掉docker中所有其他的容器..."
  # shellcheck disable=SC2046
  docker stop $(docker ps -a -q)
  # 构建并启动docker容器
fi

if [ $repository == "kami_frontend" ]; then
  echo "构建并启动docker容器..."
  docker compose -f ./deploy/docker-compose.yml up -d --build
elif [ $repository == "kami_backend" ]; then
  echo "构建并启动docker容器..."
  docker compose -f ./manifest/docker/docker-compose.yml up -d --build
else
  docker compose -f docker-compose.yaml up -d --build
  # 开启docker所有的容器
fi

if [ $repository == "kami_gateway" ]; then
  echo
  echo "开启docker所有的容器..."
  # shellcheck disable=SC2046
  docker start $(docker ps -a -q)
fi

# 删除本地代码
# shellcheck disable=SC2103
cd ..
if [ -d "$repository" ]; then
  echo "删除本地代码..."
  rm -rf $repository
fi
# 查找悬空的（无标签的）镜像

# 删除悬空的镜像
# shellcheck disable=SC2046
# 如果有悬空镜像，就删除
if [ "$(docker images -f "dangling=true" -q)" ]; then
  echo "删除悬空的镜像..."
  docker rmi $(docker images -f "dangling=true" -q)
fi
