feat: add configuration-preserving CUPS project updater
This commit is contained in:
+30
-1
@@ -6,6 +6,7 @@
|
||||
# 用法:
|
||||
# 安装: chmod +x setup_cups.sh && ./setup_cups.sh
|
||||
# 卸载: ./setup_cups.sh --uninstall
|
||||
# 更新: ./setup_cups.sh --update
|
||||
#
|
||||
|
||||
set -e
|
||||
@@ -55,6 +56,24 @@ download_repo_archive() {
|
||||
curl -fsSL -o "$output_file" "$REPO_ARCHIVE_FALLBACK_URL" 2>/dev/null
|
||||
}
|
||||
|
||||
# 独立更新入口,不调用安装或配置函数。
|
||||
update_cups() {
|
||||
check_root
|
||||
command -v python3 >/dev/null 2>&1 || error "更新功能需要 Python 3.9+,请先安装 Python 3"
|
||||
# 在子 shell 中下载独立更新器,不调用安装流程或覆盖当前安装脚本。
|
||||
(
|
||||
update_dir=$(mktemp -d)
|
||||
trap 'rm -f "$update_dir/update_cups.py"; rmdir "$update_dir" 2>/dev/null || true' EXIT
|
||||
update_url="https://git.workyai.cn/237899745/S905L3A/raw/branch/master/update_cups.py"
|
||||
info "正在下载更新器..."
|
||||
if ! curl -fsSL --connect-timeout 15 --max-time 120 -o "$update_dir/update_cups.py" "$update_url" && \
|
||||
! wget -q --timeout=30 --tries=2 -O "$update_dir/update_cups.py" "$update_url"; then
|
||||
error "更新器下载失败,未修改已安装文件"
|
||||
fi
|
||||
python3 -B "$update_dir/update_cups.py" --archive-url "$REPO_ARCHIVE_URL" "$@"
|
||||
)
|
||||
}
|
||||
|
||||
# 检查是否为root用户
|
||||
check_root() {
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
@@ -2034,6 +2053,8 @@ show_help() {
|
||||
echo " $0 显示主菜单"
|
||||
echo " $0 --install 直接安装 CUPS 打印服务"
|
||||
echo " $0 --uninstall 直接卸载 CUPS 打印服务"
|
||||
echo " $0 --update 更新已安装的程序,保留配置和密码"
|
||||
echo " 可追加 --dry-run(仅检查)或 --yes(确认更新)"
|
||||
echo " $0 --driver-manager-auth"
|
||||
echo " 修改驱动管理器用户名和密码"
|
||||
echo " $0 --help 显示此帮助信息"
|
||||
@@ -2147,9 +2168,10 @@ show_menu() {
|
||||
echo " 5) 查看当前网络状态(静态/DHCP)"
|
||||
echo " 6) 一键共享所有打印机"
|
||||
echo " 7) 修改驱动管理器用户名和密码"
|
||||
echo " 8) 更新已安装程序(保留配置和密码)"
|
||||
echo " 0) 退出"
|
||||
echo ""
|
||||
read -p " 请输入选项 [0-7]: " choice < /dev/tty
|
||||
read -p " 请输入选项 [0-8]: " choice < /dev/tty
|
||||
|
||||
case "$choice" in
|
||||
1)
|
||||
@@ -2192,6 +2214,9 @@ show_menu() {
|
||||
read -p "按 Enter 返回主菜单..." < /dev/tty
|
||||
show_menu
|
||||
;;
|
||||
8)
|
||||
update_cups
|
||||
;;
|
||||
0)
|
||||
echo "已退出"
|
||||
exit 0
|
||||
@@ -2212,6 +2237,10 @@ case "${1:-}" in
|
||||
--install|-i)
|
||||
main
|
||||
;;
|
||||
--update)
|
||||
shift
|
||||
update_cups "$@"
|
||||
;;
|
||||
--driver-manager-auth|--dm-auth)
|
||||
change_driver_manager_auth
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user