Files
claude_settings/setup-machine.sh
root c517a82a15 feat: Setup-Script für neue Maschinen
Automatisiert das Einrichten der Claude Settings auf neuen Maschinen:
- Repo clonen/updaten
- Symlinks erstellen (mit Backup bestehender Dateien)
- Tea CLI installieren
- PATH und Login-Status prüfen

Verwendung: ./setup-machine.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 15:42:17 +01:00

151 lines
4.6 KiB
Bash
Executable File

#!/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 <DEIN_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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"