#!/usr/bin/env bash

# 定义错误处理函数
handle_error() {
    echo "错误：$1"
    exit 1
}

# 检查是否提供了参数
if [ $# -eq 0 ]; then
    handle_error "请提供包名作为参数\n用法: $0 <包名>"
fi

# 获取传入的包名参数
PACKAGE_NAME="$1"

# 检查文件是否存在
if [ ! -f "$PACKAGE_NAME" ]; then
    handle_error "文件 '$PACKAGE_NAME' 不存在"
fi

# 检查文件权限
if [ ! -r "$PACKAGE_NAME" ]; then
    handle_error "没有读取文件 '$PACKAGE_NAME' 的权限"
fi

# 检查是否具有sudo权限
if ! sudo -v &>/dev/null; then
    handle_error "没有sudo权限，请确保您有足够的权限执行此脚本"
fi

## 关闭旧应用进程
#echo "正在关闭旧应用进程..."
#PIDS=$(pgrep -f market-manager-gui)
#if [ -z "$PIDS" ]; then
#    echo "没有找到正在运行的应用进程"
#else
#    echo "找到正在运行的应用进程: $PIDS"
#    for PID in $PIDS; do
#        echo "尝试终止进程 ID: $PID"
#        if ! sudo kill -TERM "$PID"; then
#            echo "警告：尝试终止进程 ID $PID 时出错"
#        else
#            echo "已发送终止信号给进程 ID: $PID"
#        fi
#    done
#fi
#
## 等待进程完全关闭
#echo "等待进程关闭..."
#sleep 2

# 检查是否还有残留进程
#PIDS=$(pgrep -f market-manager-gui)
#if [ -z "$PIDS" ]; then
#    echo "所有进程已关闭"
#else
#    echo "警告：仍有进程在运行，尝试强制关闭..."
#    for PID in $PIDS; do
#        echo "尝试强制终止进程 ID: $PID"
#        if ! sudo kill -KILL "$PID"; then
#            echo "警告：强制终止进程 ID $PID 时出错"
#        else
#            echo "已强制终止进程 ID: $PID"
#        fi
#    done
#    sleep 1
#fi

# 先卸载旧版本
echo "正在卸载旧版本..."
if ! sudo dpkg -r market-manager-gui; then
    echo "警告：卸载旧版本失败，可能未安装"
fi

# 清理APT缓存以防止冲突
echo "清理APT缓存..."
sudo apt-get clean

# 安装新版本
echo "正在安装 $PACKAGE_NAME..."
if ! sudo dpkg -i "$PACKAGE_NAME"; then
    echo "安装失败，尝试修复依赖..."
    if ! sudo apt-get install -f -y; then
        handle_error "安装失败且无法修复依赖"
    fi
    # 再次清理APT缓存
    sudo apt-get clean
    echo "修复完成，重新尝试安装..."
    if ! sudo dpkg -i "$PACKAGE_NAME"; then
        handle_error "安装最终失败"
    fi
fi

# 添加调试信息
echo "检查安装状态..."
dpkg -l | grep market-manager-gui

# 确保脚本执行完成
echo "安装过程完成"
exit 0



