#!/bin/sh
# ============================================================
#  Mac 清理：卸载无用应用（全部移入废纸篓，可恢复）
#  用法：Finder 里双击本文件 → 终端中先输 y 回车 → 再输登录密码
#  说明：只做 mv（移动到废纸篓），绝不使用 rm -rf，不碰系统卷
#  适用：macOS 13 及以上（已在 macOS 27 / Mac mini M6 实测）
# ============================================================

export PATH="/usr/bin:/bin:/usr/sbin:/sbin:$PATH"

ME="$(whoami)"
TRASH="$HOME/.Trash"

# ------------------------------------------------------------
#  ↓↓↓ 改成你自己要卸载的项目（先在 /Applications 里确认准确名字）↓↓↓
#  下面这份是我自己机器上的清单，作为写法示例保留
# ------------------------------------------------------------
ITEMS="
/Applications/iMovie.app
/Applications/GarageBand.app
/Applications/Pages Creator Studio.app
/Applications/Keynote Creator Studio.app
/Applications/Numbers Creator Studio.app
/Applications/TaierSpeed.app
/Library/Application Support/GarageBand
/Library/Application Support/Logic
"

echo ""
echo "=================================================="
echo "  Mac 清理：以下项目将被移入废纸篓（可恢复）"
echo "=================================================="
echo "$ITEMS" | while IFS= read -r p; do
  [ -n "$p" ] && echo "   $p"
done
echo ""
echo "  说明：/Library/Application Support/Logic 是 GarageBand 与"
echo "        Logic Pro 共用的音色库；若你装了 Logic Pro，删掉后"
echo "        首次启动会重新下载，自行判断要不要保留。"
echo ""
echo "  提示：系统自带应用（/System/Applications 下）删不掉，"
echo "        它们带 restricted 标记，且删了也不会释放磁盘空间。"
echo ""
printf "  确认执行？输入 y 回车，其他任意键取消： "
read -r ans
case "$ans" in
  y|Y|yes|YES) ;;
  *) echo "  已取消，未做任何改动。"; echo ""; exit 0 ;;
esac

echo ""
echo "  正在申请管理员权限（请输入你的 Mac 登录密码，输入时不会显示）..."
sudo -v || { echo "  授权失败，已退出。"; exit 1; }

BEFORE=$(df -k /System/Volumes/Data | tail -1 | awk '{print $4}')

echo ""
echo "=================== 开始移入废纸篓 ==================="
echo "$ITEMS" | while IFS= read -r p; do
  [ -z "$p" ] && continue
  if [ ! -e "$p" ]; then
    echo "  跳过   $p （不存在）"
    continue
  fi
  base=$(basename "$p")
  dest="$TRASH/$base"
  n=1
  while [ -e "$dest" ]; do
    dest="$TRASH/$base.$n"
    n=$((n+1))
  done
  if sudo mv "$p" "$dest"; then
    echo "  完成   $p"
  else
    echo "  失败   $p"
  fi
done

echo ""
echo "=================== 修正废纸篓内属主 ==================="
echo "  （这样你日后可以正常清空废纸篓，无需再输密码）"
echo "$ITEMS" | while IFS= read -r p; do
  [ -z "$p" ] && continue
  base=$(basename "$p")
  for cand in "$TRASH/$base" "$TRASH/$base.1" "$TRASH/$base.2" "$TRASH/$base.3"; do
    if [ -e "$cand" ]; then
      sudo chown -R "$ME:staff" "$cand" 2>/dev/null && echo "  属主已修正：$(basename "$cand")"
    fi
  done
done

echo ""
echo "=================== 清理结果 ==================="
echo "  /Applications 剩余："
ls -1 /Applications | sed 's/^/    /'
echo ""
echo "  /Library/Application Support 剩余："
ls -1 "/Library/Application Support" | sed 's/^/    /'
echo ""

AFTER=$(df -k /System/Volumes/Data | tail -1 | awk '{print $4}')
FREED=$(( (AFTER - BEFORE) / 1024 ))
echo "  本次释放空间约：${FREED} MB"
echo ""
df -h /System/Volumes/Data | sed 's/^/  /'
echo ""
echo "=================================================="
echo "  完成。项目都在「废纸篓」里，确认无问题后"
echo "  可在 Finder 中右键废纸篓 →「清倒废纸篓」彻底删除。"
echo "  若想恢复：打开废纸篓，右键项目 →「放回原处」。"
echo "=================================================="
echo ""
