macbook-setup/setup-claude-profiles.sh
rene fe6e70f9ab setup-claude-profiles: Symlinks fuer geteilte Daten zwischen Profilen
projects/ und settings.json werden von work nach priv verlinkt,
damit beide Profile auf dasselbe Wissen (Memory, Projektdaten,
Einstellungen) zugreifen. Nur die Auth bleibt getrennt.
2026-03-26 17:22:42 +01:00

120 lines
4.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# setup-claude-profiles.sh
# Richtet zwei getrennte Claude-Code-Profile ein (priv/work)
# Verwendung: bash setup-claude-profiles.sh
set -euo pipefail
# ── Farben ──────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok() { echo -e "${GREEN}[OK] $*${NC}"; }
warn() { echo -e "${YELLOW}[!!] $*${NC}"; }
fail() { echo -e "${RED}[FAIL] $*${NC}"; }
MARKER="claude-profiles-start"
ZSHRC="$HOME/.zshrc"
echo ""
echo "============================================"
echo " Claude-Code Multi-Profile Setup"
echo "============================================"
# ── Claude Code installiert? ────────────────────────────────────────────
if ! command -v claude &>/dev/null; then
warn "claude nicht gefunden - bitte zuerst installieren (npm install -g @anthropic-ai/claude-code)"
fi
# ── Bestehende ~/.claude migrieren ──────────────────────────────────────
echo -e "\n=== Migration ==="
if [[ -d "$HOME/.claude" && ! -d "$HOME/.claude-priv" ]]; then
mv "$HOME/.claude" "$HOME/.claude-priv"
ok "~/.claude nach ~/.claude-priv verschoben"
elif [[ -d "$HOME/.claude" && -d "$HOME/.claude-priv" ]]; then
warn "~/.claude und ~/.claude-priv existieren beide - manuelle Migration noetig"
else
ok "Nichts zu migrieren"
fi
# ── Config-Verzeichnisse anlegen ────────────────────────────────────────
echo -e "\n=== Verzeichnisse ==="
mkdir -p "$HOME/.claude-priv" "$HOME/.claude-work"
ok "~/.claude-priv angelegt (mail@motocamp.de)"
ok "~/.claude-work angelegt (rene@rm202.de)"
# ── Shared Data: work verlinkt auf priv ───────────────────────────────
echo -e "\n=== Symlinks (geteilte Daten) ==="
for item in projects settings.json; do
target="$HOME/.claude-priv/$item"
link="$HOME/.claude-work/$item"
if [[ -L "$link" ]]; then
ok "$link -> $(readlink "$link") (bereits verlinkt)"
elif [[ -e "$link" ]]; then
warn "$link existiert bereits und ist kein Symlink - uebersprungen"
else
# Sicherstellen dass das Ziel existiert
if [[ "$item" == "projects" ]]; then
mkdir -p "$target"
elif [[ ! -f "$target" ]]; then
echo '{}' > "$target"
fi
ln -s "$target" "$link"
ok "$link -> $target"
fi
done
# ── Aliases in .zshrc ──────────────────────────────────────────────────
echo -e "\n=== Shell-Aliases ==="
if [[ ! -f "$ZSHRC" ]]; then
fail "$ZSHRC existiert nicht"
exit 1
fi
if grep -qF "$MARKER" "$ZSHRC"; then
warn "$ZSHRC - Aliases bereits vorhanden"
else
{
echo ""
echo "# claude-profiles-start"
echo "alias claude-priv='CLAUDE_CONFIG_DIR=~/.claude-priv command claude' # mail@motocamp.de"
echo "alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work command claude' # rene@rm202.de"
echo 'alias claude='"'"'echo "Bitte claude-priv oder claude-work verwenden."'"'"''
cat << 'FUNC'
claude-account() {
local profile="$1"
if [[ "$profile" != "priv" && "$profile" != "work" ]]; then
echo "Verwendung: claude-account priv|work"
return 1
fi
local config_dir="$HOME/.claude-${profile}"
echo "==> Claude Code abmelden (${profile})..."
CLAUDE_CONFIG_DIR="$config_dir" command claude /logout
echo ""
echo "==> Browser oeffnen - bitte ab- und neu anmelden..."
open "https://console.anthropic.com"
read -r "?Wenn im Browser fertig, Enter druecken..."
echo ""
echo "==> Claude Code anmelden (${profile})..."
CLAUDE_CONFIG_DIR="$config_dir" command claude /login
}
FUNC
echo "# claude-profiles-end"
} >> "$ZSHRC"
ok "$ZSHRC - Aliases eingefuegt"
fi
# ── Zusammenfassung ─────────────────────────────────────────────────────
echo ""
echo "============================================"
echo " Fertig! Profil-Zuordnung:"
echo " claude-priv -> mail@motocamp.de"
echo " claude-work -> rene@rm202.de"
echo "============================================"
echo ""
echo "Naechste Schritte:"
echo " 1. source ~/.zshrc"
echo " 2. claude-priv (mit mail@motocamp.de einloggen)"
echo " 3. claude-work (mit rene@rm202.de einloggen)"
echo ""
echo "Account wechseln: claude-account priv oder claude-account work"
echo ""