- CLAUDE.md: Host-Troubleshooting → Infrastruktur-Dokumentationssystem - session-start.sh: Erkennt ~/Nextcloud/[kunde]/[repo]/ Struktur - Legacy-Support für ~/Nextcloud/hosts/ mit Migrations-Hinweis Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
149 lines
5.1 KiB
Bash
Executable File
149 lines
5.1 KiB
Bash
Executable File
#!/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 "<REPO_SETUP_REQUIRED>"
|
|
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 "</REPO_SETUP_REQUIRED>"
|
|
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
|