-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
89 lines (70 loc) · 2.78 KB
/
Copy pathsetup.sh
File metadata and controls
89 lines (70 loc) · 2.78 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
#!/usr/bin/env bash
# setup.sh — настройка wiki на новой машине
#
# Использование:
# git clone git@github.com:mooncodee/wiki-config.git ~/Documents/wiki
# cd ~/Documents/wiki && bash setup.sh
set -e
WIKI_DIR="$(cd "$(dirname "$0")" && pwd)"
COMPILER_DIR="$WIKI_DIR/memory-compiler"
SETTINGS="$HOME/.claude/settings.json"
echo "=== Wiki Setup ==="
echo "Папка: $WIKI_DIR"
echo ""
# 1. Клонировать wiki-notes (контент)
if [ ! -d "$WIKI_DIR/wiki" ]; then
echo "→ Клонирую wiki-notes..."
TMP="$WIKI_DIR/.notes-tmp"
git clone git@github.com:mooncodee/wiki-notes.git "$TMP"
mv "$TMP/wiki" "$WIKI_DIR/wiki"
mv "$TMP/daily" "$WIKI_DIR/daily"
[ -d "$TMP/raw" ] && mv "$TMP/raw" "$WIKI_DIR/raw"
rm -rf "$TMP"
# Восстановить notes git репо
mv "$WIKI_DIR/wiki/.git" "$WIKI_DIR/.gnotes" 2>/dev/null || true
git --git-dir="$WIKI_DIR/.gnotes" config core.worktree "$WIKI_DIR"
git --git-dir="$WIKI_DIR/.gnotes" config core.excludesFile "$WIKI_DIR/.gnotes/info/exclude"
echo " Готово."
else
echo "→ wiki/ уже есть, пропускаю."
fi
echo ""
# 2. Установить зависимости Python
echo "→ Устанавливаю зависимости (uv sync)..."
cd "$COMPILER_DIR" && uv sync
echo " Готово."
echo ""
# 3. Прописать хуки в ~/.claude/settings.json
echo "→ Прописываю хуки в $SETTINGS..."
if [ ! -f "$SETTINGS" ]; then
echo " Файл $SETTINGS не найден. Убедись что Claude Code установлен."
exit 1
fi
python3 - <<PYEOF
import json
with open("$SETTINGS") as f:
cfg = json.load(f)
hooks = cfg.setdefault("hooks", {})
wiki = "$WIKI_DIR"
comp = "$COMPILER_DIR"
def hook(script, timeout):
return {"matcher": "", "hooks": [{"type": "command", "timeout": timeout,
"command": f"KB_ROOT={wiki} uv run --directory {comp} python {comp}/hooks/{script}"}]}
hooks["SessionStart"] = [hook("session-start.py", 15)]
hooks["PreCompact"] = [hook("pre-compact.py", 10)]
hooks["SessionEnd"] = [hook("session-end.py", 10)]
with open("$SETTINGS", "w") as f:
json.dump(cfg, f, indent=2, ensure_ascii=False)
f.write("\n")
print(" Хуки прописаны.")
PYEOF
# 4. Добавить gnotes в internal exclude config репо
if ! grep -q "gnotes" "$WIKI_DIR/.git/info/exclude" 2>/dev/null; then
printf "\n.gnotes\nwiki/\ndaily/\nraw/\n" >> "$WIKI_DIR/.git/info/exclude"
fi
echo ""
echo "✓ Готово! Перезапусти Claude Code — хуки активируются автоматически."
echo ""
echo "Команды для синхронизации заметок:"
echo " Push: git --git-dir=$WIKI_DIR/.gnotes push"
echo " Pull: git --git-dir=$WIKI_DIR/.gnotes pull"