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>
151 lines
4.6 KiB
Bash
Executable File
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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|