#!/bin/bash
xhost + 
# 检查root权限
if [ "$(id -u)" -ne 0 ]; then
    pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $0
    exit
fi

# 风险确认对话框
if ! zenity --question \
          --title="系统升级确认" \
          --text="您即将执行GXDE OS 15到25的升级\n\n\
• 该操作不可逆且存在风险\n\
• 请确保系统已经更新到最新\n\
• 请确保已做好数据备份\n\
• 您确定要继续吗？" \
          --ok-label="继续升级" \
          --cancel-label="我还有事没做完，取消"; then
    garma --info --text="升级操作已取消" --timeout=3
    exit 0
fi

if ! zenity --question \
          --title="再次升级确认" \
          --text="您即将执行GXDE OS 15到25的升级\n\n\
• 该操作不可逆且存在风险！！！\n\
• 请确保系统已经更新到最新！！！\n\
• 请确保已做好数据备份！！！\n\
• 您确定要继续吗？" \
          --ok-label="我已再次确认，继续升级" \
          --cancel-label="我还有事没做完，取消"; then
    garma --info --text="升级操作已取消" --timeout=3
    exit 0
fi

apt update | garma --progress --pulsate --text="正在刷新系统包缓存，请保持网络通畅..." --no-cancel --auto-close
aptss update | garma --progress --pulsate --text="正在刷新系统包缓存，请保持网络通畅..." --no-cancel --auto-close
env DEBIAN_FRONTEND=noninteractive aptss install -f -yqq | garma --progress --pulsate --text="正在检查和修复系统依赖问题..." --no-cancel --auto-close

apt autopurge qtbase5-dev -y | garma --progress --pulsate --text="正在删除一些可能导致升级失败的软件开发包...您可在升级结束后重新安装： qtbase5-dev" --no-cancel --auto-close
cp -v /usr/bin/gxde-post-upgrade-fix /usr/local/bin/gxde-post-upgrade-fix 
# 替换主源文件
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

# 处理PPA源
declare -A ppa_map=(
    ["/etc/apt/sources.list.d/gxde.list"]='s/bixie/lizhi/g'
    ["/etc/apt/sources.list.d/gxde-testing.list"]='s/tianlu/zhuangzhuang/g'
)
rm -vf /etc/apt/sources.list.d/gxde-bpo.list

for file in "${!ppa_map[@]}"; do
    if [[ -f "$file" ]]; then
        sed -i "${ppa_map[$file]}" "$file"
    else
        [[ "$file" =~ testing ]] && continue  # 测试源不存在时跳过
        garma --error --text="关键文件缺失：$file"
        exit 1
    fi
done
	rm -fv /usr/bin/gxde-app-upgrader
	cat > /usr/bin/gxde-app-upgrader   << EOF
#!/bin/bash
garma --warning --text="检测到您尚未完成系统大版本更新，请使用 GXDE 25 更新器 完成更新后再检查更新！"
EOF
	chmod +x  /usr/bin/gxde-app-upgrader

apt update | garma --progress --pulsate --text="正在刷新系统包缓存，请保持网络通畅..." --no-cancel --auto-close
aptss update | garma --progress --pulsate --text="正在刷新系统包缓存，请保持网络通畅..." --no-cancel --auto-close
yes n | env DEBIAN_FRONTEND=noninteractive aptss install gxde-25-upgrader -yqq 

    warning_text="即将启动升级程序！\n\n\
• 升级过程可能需要1-3小时,期间请勿进行其他操作\n\
• 升级过程中请勿关闭弹出的终端窗口，否则可能导致升级出错\n\
• 请保持网络畅通"
    
garma --warning --text="$warning_text" --timeout=10

    # 启动图形升级器

	gxde-terminal -e bash -c '/usr/local/bin/gxde-post-upgrade-fix'

