#!/bin/bash # Claude Code Session-Start Hook # 1. Prüft auf Updates im Settings-Repo # 2. Zeigt Projekt-Kontext wenn WORKLOG.md vorhanden REPO_DIR="$HOME/dotfiles/claude_settings" ORIGINAL_DIR="$(pwd)" # === TEIL 1: Settings-Repo Synchronisierung === cd "$REPO_DIR" 2>/dev/null || true if [ -d "$REPO_DIR/.git" ]; then git fetch origin --quiet 2>/dev/null || true LOCAL=$(git rev-parse HEAD 2>/dev/null) REMOTE=$(git rev-parse origin/main 2>/dev/null) if [ "$LOCAL" != "$REMOTE" ]; then BEHIND=$(git rev-list HEAD..origin/main --count 2>/dev/null) echo "⚠ Claude Settings: $BEHIND neue Commits verfügbar!" echo " → cd ~/dotfiles/claude_settings && git pull" echo "" fi fi # === TEIL 2: Kunden-/Repo-Verzeichnis Erkennung === cd "$ORIGINAL_DIR" 2>/dev/null || exit 0 # Bekannte Kunden-Verzeichnisse KUNDEN_BASE="$HOME/Nextcloud" KNOWN_KUNDEN="vinos egonetix" # Prüfe ob wir in einem Kunden-Verzeichnis sind (~/Nextcloud/[kunde]/[repo]/) for KUNDE in $KNOWN_KUNDEN; do KUNDE_PATH="$KUNDEN_BASE/$KUNDE" if [[ "$ORIGINAL_DIR" == "$KUNDE_PATH"/* ]]; then # Extrahiere Repo-Name REL_PATH="${ORIGINAL_DIR#$KUNDE_PATH/}" REPO_NAME=$(echo "$REL_PATH" | cut -d'/' -f1) if [[ -n "$REPO_NAME" ]]; then echo "=== KUNDEN-REPO ERKANNT ===" echo "Kunde: $KUNDE" echo "Repo: $REPO_NAME" echo "" # Prüfe ob README.md vorhanden if [[ -f "README.md" ]]; then echo "README.md vorhanden - lies sie für Kontext." elif [[ -f "copilot-instructions.md" ]]; then echo "copilot-instructions.md vorhanden - lies sie für Kontext." else # Prüfe auf Setup-Anforderungen NEEDS_SETUP=false NEEDS_GIT=false if [[ ! -d ".git" ]]; then NEEDS_GIT=true NEEDS_SETUP=true fi if [[ "$NEEDS_SETUP" == "true" ]]; then echo "" if [[ "$NEEDS_GIT" == "true" ]]; then echo "- Kein Git-Repository vorhanden → git init erforderlich" fi echo "- Keine README.md vorhanden" echo " Template: $KUNDEN_BASE/$KUNDE/infrastructure/_templates/" echo "" echo "Frage den User ob das Setup automatisch durchgeführt werden soll." echo "" fi fi echo "" fi break fi done # Legacy: Prüfe auch ~/Nextcloud/hosts/ für Übergangszeit HOSTS_BASE="$HOME/Nextcloud/hosts" if [[ "$ORIGINAL_DIR" == "$HOSTS_BASE"/* ]]; then REL_PATH="${ORIGINAL_DIR#$HOSTS_BASE/}" if [[ "$REL_PATH" == *"/"* ]] && [[ "$REL_PATH" != "_templates"* ]]; then KUNDE=$(echo "$REL_PATH" | cut -d'/' -f1) HOSTNAME=$(echo "$REL_PATH" | cut -d'/' -f2) if [[ -n "$KUNDE" ]] && [[ -n "$HOSTNAME" ]]; then echo "=== LEGACY HOST-VERZEICHNIS ERKANNT ===" echo "Kunde: $KUNDE" echo "Host: $HOSTNAME" echo "" echo "HINWEIS: Die Host-Struktur wurde migriert zu ~/Nextcloud/[kunde]/[repo]/" echo "Dieses Verzeichnis sollte nach ~/Nextcloud/$KUNDE/ migriert werden." echo "" if [[ -f "copilot-instructions.md" ]]; then echo "copilot-instructions.md vorhanden - lies sie für Kontext." echo "" fi fi fi fi # === TEIL 3: Projekt-Kontext anzeigen === if [[ -f "WORKLOG.md" ]]; then echo "=== PROJECT CONTEXT ===" # Current State anzeigen if grep -q "## Current State" WORKLOG.md; then sed -n '/## Current State/,/## Next Steps/p' WORKLOG.md | head -10 | tail -n +2 | head -6 echo "" fi # Next Steps anzeigen if grep -q "## Next Steps" WORKLOG.md; then echo "## Next Steps" sed -n '/## Next Steps/,/## Key Decisions/p' WORKLOG.md | grep -E "^- \[" | head -5 echo "" fi # Learnings anzeigen (falls vorhanden) if grep -q "^\*\*[0-9]" WORKLOG.md; then LEARNINGS=$(sed -n '/## Learnings/,/## Session History/p' WORKLOG.md | grep -E "^\*\*[0-9]" | tail -3) if [ -n "$LEARNINGS" ]; then echo "## Recent Learnings" echo "$LEARNINGS" echo "" fi fi # Letzte Commits if [ -d ".git" ]; then echo "=== RECENT COMMITS ===" git log --oneline -5 2>/dev/null || echo "(keine Commits)" echo "" fi # Gitea Issues (wenn tea konfiguriert) if command -v tea &>/dev/null; then # Prüfe ob tea login konfiguriert ist if tea login list 2>/dev/null | grep -q "gitea"; then echo "=== OPEN ISSUES ===" tea issues --state open --limit 5 2>/dev/null || echo "(Gitea nicht erreichbar oder kein Gitea-Repo)" fi fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" fi exit 0