-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·106 lines (97 loc) · 3.09 KB
/
install.sh
File metadata and controls
executable file
·106 lines (97 loc) · 3.09 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env bash
# Claude Memory Manager — one-line installer
# Usage: curl -fsSL https://raw.githubusercontent.com/<user>/claude-memory-manager/main/install.sh | bash
set -euo pipefail
MARKETPLACE_NAME="WhymustIhaveaname"
PLUGIN_NAME="claude-memory-manager"
PLUGIN_VERSION="1.1.0"
REPO_URL="https://github.com/WhymustIhaveaname/claude-memory-manager"
PLUGINS_DIR="$HOME/.claude/plugins"
MARKETPLACE_DIR="$PLUGINS_DIR/marketplaces/$MARKETPLACE_NAME"
CACHE_DIR="$PLUGINS_DIR/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$PLUGIN_VERSION"
KNOWN_FILE="$PLUGINS_DIR/known_marketplaces.json"
INSTALLED_FILE="$PLUGINS_DIR/installed_plugins.json"
SETTINGS_FILE="$HOME/.claude/settings.json"
echo "[memory-manager] Installing $PLUGIN_NAME v$PLUGIN_VERSION..."
# 1. Clone or update repository
if [ -d "$MARKETPLACE_DIR" ]; then
echo "[memory-manager] Updating existing installation..."
cd "$MARKETPLACE_DIR"
git pull --quiet 2>/dev/null || true
cd - >/dev/null
else
echo "[memory-manager] Cloning repository..."
mkdir -p "$(dirname "$MARKETPLACE_DIR")"
git clone --depth 1 "$REPO_URL.git" "$MARKETPLACE_DIR" 2>/dev/null
fi
# 2. Copy to cache
echo "[memory-manager] Setting up cache..."
mkdir -p "$CACHE_DIR"
rsync -a --delete \
--exclude='.git' \
--exclude='.venv' \
--exclude='__pycache__' \
--exclude='.pytest_cache' \
--exclude='node_modules' \
"$MARKETPLACE_DIR/" "$CACHE_DIR/"
# 3. Register marketplace
echo "[memory-manager] Registering marketplace..."
if [ -f "$KNOWN_FILE" ]; then
KNOWN=$(cat "$KNOWN_FILE")
else
KNOWN="{}"
fi
KNOWN=$(echo "$KNOWN" | python3 -c "
import sys, json
data = json.load(sys.stdin)
data['$MARKETPLACE_NAME'] = {
'source': '$REPO_URL',
'installLocation': '$MARKETPLACE_DIR'
}
print(json.dumps(data, indent=2))
")
echo "$KNOWN" > "$KNOWN_FILE"
# 4. Register installed plugin
echo "[memory-manager] Registering plugin..."
if [ -f "$INSTALLED_FILE" ]; then
INSTALLED=$(cat "$INSTALLED_FILE")
else
INSTALLED="{}"
fi
INSTALLED=$(echo "$INSTALLED" | python3 -c "
import sys, json
from datetime import datetime
data = json.load(sys.stdin)
data['${PLUGIN_NAME}@${MARKETPLACE_NAME}'] = {
'name': '$PLUGIN_NAME',
'marketplace': '$MARKETPLACE_NAME',
'version': '$PLUGIN_VERSION',
'installPath': '$CACHE_DIR',
'installedAt': datetime.now().isoformat()
}
print(json.dumps(data, indent=2))
")
echo "$INSTALLED" > "$INSTALLED_FILE"
# 5. Enable plugin in settings
echo "[memory-manager] Enabling plugin..."
if [ -f "$SETTINGS_FILE" ]; then
SETTINGS=$(cat "$SETTINGS_FILE")
else
SETTINGS="{}"
fi
SETTINGS=$(echo "$SETTINGS" | python3 -c "
import sys, json
data = json.load(sys.stdin)
if 'enabledPlugins' not in data:
data['enabledPlugins'] = {}
data['enabledPlugins']['${PLUGIN_NAME}@${MARKETPLACE_NAME}'] = True
print(json.dumps(data, indent=2))
")
echo "$SETTINGS" > "$SETTINGS_FILE"
echo ""
echo "[memory-manager] Installation complete!"
echo "[memory-manager] Plugin: $PLUGIN_NAME v$PLUGIN_VERSION"
echo "[memory-manager] Location: $CACHE_DIR"
echo ""
echo "Start a new Claude Code session to activate the plugin."
echo "The memory manager web UI will start automatically."