#!/bin/bash # Claude Settings Setup Script # Richtet die Claude Code Konfiguration auf einer neuen Maschine ein # # Verwendung: # curl -fsSL https://gitea.egonetix.de/root/claude_settings/raw/branch/main/setup-machine.sh | bash # oder: # cd ~/dotfiles/claude_settings && ./setup-machine.sh set -e REPO_URL="ssh://git@gitea.egonetix.de:222/root/claude_settings.git" REPO_DIR="$HOME/dotfiles/claude_settings" CLAUDE_DIR="$HOME/.claude" TEA_VERSION="0.9.2" echo "=== Claude Settings Setup ===" echo "" # Farben RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color success() { echo -e "${GREEN}✓${NC} $1"; } warn() { echo -e "${YELLOW}⚠${NC} $1"; } error() { echo -e "${RED}✗${NC} $1"; } # 1. Repo clonen oder updaten echo "1. Settings-Repo..." if [[ -d "$REPO_DIR/.git" ]]; then cd "$REPO_DIR" git fetch origin --quiet LOCAL=$(git rev-parse HEAD) REMOTE=$(git rev-parse origin/main) if [[ "$LOCAL" != "$REMOTE" ]]; then git pull origin main --quiet success "Repo aktualisiert" else success "Repo ist aktuell" fi else mkdir -p "$(dirname "$REPO_DIR")" git clone "$REPO_URL" "$REPO_DIR" --quiet success "Repo geclont nach $REPO_DIR" fi # 2. ~/.claude Verzeichnis erstellen echo "" echo "2. Claude-Verzeichnis..." mkdir -p "$CLAUDE_DIR" success "~/.claude existiert" # 3. Symlinks erstellen echo "" echo "3. Symlinks erstellen..." create_symlink() { local source="$1" local target="$2" local name="$3" if [[ -L "$target" ]]; then # Symlink existiert - prüfe ob korrekt if [[ "$(readlink "$target")" == "$source" ]]; then success "$name (bereits korrekt)" return else rm "$target" fi elif [[ -e "$target" ]]; then # Datei/Ordner existiert - Backup erstellen mv "$target" "${target}.backup.$(date +%Y%m%d)" warn "$name: Backup erstellt" fi ln -sf "$source" "$target" success "$name" } create_symlink "$REPO_DIR/CLAUDE.md" "$CLAUDE_DIR/CLAUDE.md" "CLAUDE.md" create_symlink "$REPO_DIR/settings.json" "$CLAUDE_DIR/settings.json" "settings.json" create_symlink "$REPO_DIR/hooks" "$CLAUDE_DIR/hooks" "hooks/" create_symlink "$REPO_DIR/skills" "$CLAUDE_DIR/skills" "skills/" create_symlink "$REPO_DIR/templates" "$CLAUDE_DIR/templates" "templates/" create_symlink "$REPO_DIR/plans" "$CLAUDE_DIR/plans" "plans/" create_symlink "$REPO_DIR/statusline-command.sh" "$CLAUDE_DIR/statusline-command.sh" "statusline-command.sh" # 4. Tea CLI installieren echo "" echo "4. Tea CLI (Gitea)..." TEA_BIN="$HOME/.local/bin/tea" mkdir -p "$HOME/.local/bin" if [[ -x "$TEA_BIN" ]]; then CURRENT_VERSION=$("$TEA_BIN" --version 2>/dev/null | grep -oP 'Version: \K[0-9.]+' || echo "unknown") if [[ "$CURRENT_VERSION" == "$TEA_VERSION" ]]; then success "Tea CLI v$TEA_VERSION bereits installiert" else curl -fsSL "https://dl.gitea.io/tea/$TEA_VERSION/tea-$TEA_VERSION-linux-amd64" -o "$TEA_BIN" chmod +x "$TEA_BIN" success "Tea CLI aktualisiert auf v$TEA_VERSION" fi else curl -fsSL "https://dl.gitea.io/tea/$TEA_VERSION/tea-$TEA_VERSION-linux-amd64" -o "$TEA_BIN" chmod +x "$TEA_BIN" success "Tea CLI v$TEA_VERSION installiert" fi # 5. PATH prüfen echo "" echo "5. PATH prüfen..." if echo "$PATH" | tr ':' '\n' | grep -q "$HOME/.local/bin"; then success "~/.local/bin ist im PATH" else warn "~/.local/bin ist NICHT im PATH" echo " Füge zu ~/.bashrc oder ~/.zshrc hinzu:" echo ' export PATH="$HOME/.local/bin:$PATH"' fi # 6. Tea Login Status echo "" echo "6. Tea Login Status..." if "$TEA_BIN" login list 2>/dev/null | grep -q "gitea"; then success "Tea ist bei Gitea eingeloggt" else warn "Tea ist NICHT eingeloggt" echo "" echo " Führe aus:" echo " tea login add --url https://gitea.egonetix.de --token --name gitea" echo "" echo " Token erstellen: https://gitea.egonetix.de/user/settings/applications" fi # Zusammenfassung echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Setup abgeschlossen auf: $(hostname)" echo "" echo "Nächste Schritte:" echo "1. Terminal neu starten (oder 'source ~/.bashrc')" echo "2. Tea Login konfigurieren (falls noch nicht geschehen)" echo "3. Claude Code starten: claude" echo "" echo "Skills verfügbar:" echo " /session-start - Session starten" echo " /session-end - Session beenden" echo " /new-project - Neues Projekt anlegen" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"