-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.sh
More file actions
executable file
·56 lines (49 loc) · 1.92 KB
/
Copy pathuninstall.sh
File metadata and controls
executable file
·56 lines (49 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env bash
# claude-autonomy 卸载脚本 (macOS)
# 移除命令、注销 Stop Hook
set -euo pipefail
PLUGIN_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CLAUDE_DIR="$HOME/.claude"
COMMANDS_DIR="$CLAUDE_DIR/commands/autocc"
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
echo "🗑 claude-autonomy 卸载脚本"
echo "═══════════════════════════════════════"
# 1. 移除命令文件
if [[ -d "$COMMANDS_DIR" ]]; then
rm -rf "$COMMANDS_DIR"
echo "✅ 已移除命令目录: $COMMANDS_DIR"
else
echo "ℹ️ 命令目录不存在,跳过"
fi
# 2. 注销 Stop Hook(按文件名匹配,不依赖完整路径,避免仓库移动后清不掉)
if [[ -f "$SETTINGS_FILE" ]] && command -v jq &>/dev/null; then
HAS_HOOK=$(jq -r '
.hooks.Stop // [] | .[] | .hooks // [] | .[] |
select(.command | test("stop-hook\\.sh$")) | .command
' "$SETTINGS_FILE" 2>/dev/null || true)
if [[ -n "$HAS_HOOK" ]]; then
TEMP_FILE=$(mktemp)
jq '
.hooks.Stop //= [] |
.hooks.Stop = [
.hooks.Stop[] |
.hooks = [.hooks[] | select(.command | test("stop-hook\\.sh$") | not)] |
select(.hooks | length > 0)
] |
if .hooks.Stop == [] then del(.hooks.Stop) else . end |
if .hooks == {} then del(.hooks) else . end
' "$SETTINGS_FILE" > "$TEMP_FILE"
mv "$TEMP_FILE" "$SETTINGS_FILE"
echo "✅ 已注销 Stop Hook"
else
echo "ℹ️ Stop Hook 未注册,跳过"
fi
else
echo "ℹ️ settings.json 不存在或 jq 未安装,跳过 Hook 清理"
fi
echo ""
echo "═══════════════════════════════════════"
echo "✅ 卸载完成!"
echo ""
echo "注意: 项目中的 .autonomy/ 目录和 CLAUDE.md 中的 Autonomy Protocol 未被删除。"
echo "如需完全清理,请手动删除项目中的 .autonomy/ 目录。"