diff --git a/setup-machine.sh b/setup-machine.sh new file mode 100755 index 0000000..7433dc4 --- /dev/null +++ b/setup-machine.sh @@ -0,0 +1,150 @@ +#!/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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"