uninstall.sh 1.5 KB

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