#!/bin/bash
clear
#  如果存在则删除 dotnet 文件夹与压缩包
[ -d "./dotnet" ] && rm -rf ./dotnet
rm -f ./*.tar.gz ./*.zip 2>/dev/null

# 给TShock执行权限
chmod +x ./TShock.Installer ./TShock.Server

echo "正在进行下载DotNet..预计需要1-10分钟"
echo "安装结束后，程序默认会进入服务器..."
# 启动安装器（转为后台运行）
./TShock.Installer &

# 获取安装器 PID
INSTALLER_PID=$!

# 轮询检测 TShock.Server 是否启动
MAX_WAIT=3600   # 最多等待3600秒
WAITED=0
FOUND=0

echo "正在检测 TShock.Server 是否启动（最多等待 $MAX_WAIT 秒）..."
while [ $WAITED -lt $MAX_WAIT ]; do
    if pgrep -x "TShock.Server" > /dev/null; then
        echo "检测到 TShock.Server 已启动"
        FOUND=1
        break
    fi
    sleep 1
    WAITED=$((WAITED + 1))
done

if [ $FOUND -eq 0 ]; then
    echo "❌ 超时：未检测到 TShock.Server 启动"
    kill $INSTALLER_PID 2>/dev/null
    echo "已终止安装器进程，请检查网络是否异常，导致DontNet压缩包下载失败"
    exit 1
fi

# 杀死 TShock.Server程序  删除DontNet压缩包
echo "正在终止 TShock.Server..."
pkill -f TShock.Server
rm -f ./*.tar.gz ./*.zip 2>/dev/null

# 删除旧的start.sh, 将start2.sh 重命名为 start.sh 并给start2.sh执行权限（避免找不到它）
if [ -f "./start2.sh" ]; then
    chmod +x ./start2.sh
    [ -f "./start.sh" ] && rm -f ./start.sh
    mv -f ./start2.sh ./start.sh
	# 设置环境变量
    export DOTNET_ROOT=$(pwd)/dotnet
    export PATH=$DOTNET_ROOT:$PATH
    # 创建提取目录
    export BASE_DIR=./dotnet/bundle-extract
    mkdir -p "$BASE_DIR"
    echo "自动重启启动项已重命名为 start.sh"
fi

# 检查新的 start.sh 是否存在并可执行
if [ -f "./start.sh" ]; then
    chmod +x ./start.sh
    echo "自动化部署已完成，服务器将在3秒后自动开启..."
    sleep 3
    exec ./start.sh
else
    echo "错误：找不到 start.sh 启动脚本！"
    exit 1
fi