#!/bin/sh set -u PACKAGE_SOURCE=${PI_PACKAGE_SOURCE:-git:git@bitbucket.org:siakitem/my-pi.git} uninstall_failed=0 ask_yes_no() { prompt=$1 printf '%s [y/N] ' "$prompt" if ! IFS= read -r answer; then answer=n fi case $answer in y|Y|yes|YES|Yes) return 0 ;; *) return 1 ;; esac } if ! command -v pi >/dev/null 2>&1; then printf '错误: 找不到 pi,无法卸载组合包。请确保 pi 位于 PATH。\n' >&2 exit 127 fi printf '正在从 Pi 中移除组合包:%s\n' "$PACKAGE_SOURCE" if ! pi remove "$PACKAGE_SOURCE"; then printf '%s\n' '错误: 组合包移除失败。' >&2 exit 1 fi if command -v hippo >/dev/null 2>&1; then hippo_version=$(hippo --version 2>/dev/null | sed -n 's/^[^0-9]*\([0-9][0-9.]*\).*$/\1/p' | sed -n '1p') if ask_yes_no "检测到 Hippo Memory CLI ${hippo_version:-未知版本}。是否同时卸载 npm 全局 hippo-memory?项目与全局记忆数据会保留。"; then if ! command -v npm >/dev/null 2>&1; then printf '%s\n' '警告: 找不到 npm,无法卸载 Hippo Memory CLI。' >&2 uninstall_failed=1 elif ! npm list -g --depth=0 hippo-memory >/dev/null 2>&1; then printf '%s\n' '警告: 当前 hippo 不属于 npm 全局 hippo-memory 安装,已保留。' >&2 uninstall_failed=1 elif npm uninstall -g hippo-memory; then printf '%s\n' 'Hippo Memory CLI 已卸载;.hippo 与用户级记忆数据均已保留。' else printf '%s\n' '警告: Hippo Memory CLI 卸载失败。' >&2 uninstall_failed=1 fi else printf '%s\n' 'Hippo Memory CLI 已保留。' fi else printf '%s\n' '未检测到 Hippo Memory CLI,无需额外卸载。' fi printf '%s\n' '组合包已移除。CodeGraph、Kotlin LSP、JDT LS、Java 和记忆数据均未卸载,因为它们可能仍被其他项目使用。' exit "$uninstall_failed"