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.
120 lines
4.8 KiB
Bash
Executable file
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 ""
|