#!/bin/bash

# 显示旋转指示器的函数
spin() {
    local -a marks=('/' '-' '\' '|')
    local i=0
    while kill -0 $1 2>/dev/null; do
        i=$(( (i+1) % 4 ))
        printf "\r${marks[i]} 正在安装，请稍候..."
        sleep 0.1
    done
    printf "\r"
}

# 执行 Docker 安装的函数
install_docker() {
    apt-get -y update  > /dev/null  2>&1
    apt-get -y install apt-transport-https ca-certificates curl software-properties-common  --force-yes  > /dev/null  2>&1
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -  > /dev/null  2>&1
    echo -e "\n" | add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"  > /dev/null  2>&1
    echo -e "\n" | apt-get -y update > /dev/null  2>&1
    apt-get -y install docker-ce    --force-yes > /dev/null  2>&1
    systemctl enable docker > /dev/null  2>&1
    systemctl start docker
}

# 执行 Docker-compose 部署的函数
deploy_docker_compose() {
  curl -sL https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
  chmod +x /usr/local/bin/docker-compose
}

# 执行 Docker compose 部署的函数
deploy_docker_composes() {
  apt-get install docker-compose-plugin  -y  > /dev/null  2>&1
}

# 主脚本开始
echo -e "\e[32m此脚本只合适 debian 系统部署 Docker\e[0m"
echo -e  "\e[33m1.开始安装 Docker (预计5分钟)...\e[0m"
# 在后台调用安装 Docker 的函数
install_docker &
# 获取安装函数的 PID
pid=$!
# 调用旋转指示器函数
spin $pid

# 检查 Docker 是否安装成功
docker_version=$(docker --version | awk '{print $3}' | sed 's/,//')
if [ -z "$docker_version" ]; then
    echo -e "\e[31m安装失败，请检查!!!\e[0m"
else
    echo -e "\n\e[91m安装成功，Docker 版本为 $docker_version\e[0m"
fi

echo -e  "\e[33m2.开始安装 Docker-compose...\e[0m"
# 在后台调用部署 Docker-compose 的函数
deploy_docker_compose &
# 获取部署函数的 PID
pid=$!
# 调用旋转指示器函数
spin $pid

# 检查 Docker-compose 是否部署成功
docker_compose_version=$(docker-compose version | awk '{print $4}' |sed 's/v//')
if [ -z "$docker_compose_version" ]; then
    echo -e "\e[31m安装失败，请检查!!!\e[0m"
else
    echo -e "\n\e[91m安装成功，Docker-compose版本为 $docker_compose_version\e[0m"
fi

# 升级docker compose命令
echo -e  "\e[33m3.检查升级docker compose命令...\e[0m"
# 在后台调用部署 Docker-compose 的函数
deploy_docker_composes &
# 获取部署函数的 PID
pid=$!
# 调用旋转指示器函数
spin $pid

# 检查 docker compose命令是否安装升级成功
docker_composes_version=$(docker compose version | awk '{print $4}' | sed 's/,//')
if [ -z "$docker_composes_version" ]; then
    echo -e "\e[31m安装失败，请检查!!!\e[0m"
else
    echo -e "\n\e[91m安装成功，Docker compose版本为 $docker_composes_version\e[0m"
fi

