#!/bin/sh # 观澜·如东样板 v2 — 卸载 (Linux / macOS) # 用法: sh uninstall.sh 交互: 先打印计划, 问一次再执行 # sh uninstall.sh --dry-run 只打印计划, 一个字节都不动 # sh uninstall.sh --yes 不问(脚本/无人值守) # sh uninstall.sh --purge --yes 连 data/ outputs/ logs/ .venv/ 一起删 # sh uninstall.sh --all --yes 连程序文件一起删(最后给收尾命令) # 默认只拆"本程序装上去的东西"(服务/自启/快捷方式/运行态/安装记录); 数据与产物一律保留。 # ★P13:按模块安装/卸载 —— `--module <名[,名]>` 时逐模块调用该模块自带的同名脚本; # 其余参数原样透传;不带 --module 时**保持原行为**。 MODULES_ARG="" _prev="" for _a in "$@"; do if [ "$_prev" = "--module" ]; then MODULES_ARG="$_a"; fi _prev="$_a" done if [ -n "$MODULES_ARG" ]; then _status=0 _ifs=$IFS; IFS=',' for _m in $MODULES_ARG; do if [ -x "$_m/uninstall.sh" ]; then sh "$_m/uninstall.sh" "$@" || _status=$? else echo "[X] 未知模块: $_m" >&2; _status=2 fi done IFS=$_ifs exit $_status fi cd "$(dirname "$0")" || exit 1 export PYTHONUTF8=1 if [ -x ".venv/bin/python" ]; then exec ".venv/bin/python" "scripts/guanlan_uninstall.py" "$@" fi for c in python3.12 python3.13 python3.11 python3; do p=$(command -v $c 2>/dev/null) && exec "$p" "scripts/guanlan_uninstall.py" "$@" done echo "[X] 找不到 Python 3 (.venv 也已被删) —— 手工删掉本目录即可: rm -rf \"$(pwd)\"" >&2 exit 2