#!/usr/bin/env sh
# post-commit – Automatischer History-Log
#
# Läuft nach jedem erfolgreichen Commit.
# Schreibt einen faktischen Eintrag in history/prompts/ mit:
#   - Commit-Hash, Branch, Datum, Message
#   - Liste der geänderten Dateien
#
# Die Datei wird NICHT automatisch committed (kein Rekursionsrisiko).
# Sie wird beim nächsten regulären Commit mit erfasst (history/ ist tracked).

HASH=$(git rev-parse --short HEAD 2>/dev/null)
FULL_HASH=$(git rev-parse HEAD 2>/dev/null)
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
DATE=$(date '+%Y-%m-%d')
DATETIME=$(date '+%Y-%m-%d %H:%M:%S')
MSG=$(git log -1 --format='%s' 2>/dev/null)
AUTHOR=$(git log -1 --format='%an <%ae>' 2>/dev/null)

# Nur ausführen wenn history/prompts/ existiert
if [ ! -d "history/prompts" ]; then
    exit 0
fi

# Dateiname: Datum + Branch (bereinigt) + Hash
BRANCH_CLEAN=$(printf '%s' "$BRANCH" | tr '/' '-' | tr ' ' '-')
OUTFILE="history/prompts/${DATE}_${BRANCH_CLEAN}_${HASH}.md"

# Geänderte Dateien dieses Commits
CHANGED_FILES=$(git diff-tree --no-commit-id -r --name-status "$FULL_HASH" 2>/dev/null \
    | awk '{printf "| %-1s | %s |\n", $1, $2}')

cat > "$OUTFILE" << EOF
# Auto-Log: $MSG

| Feld | Wert |
|---|---|
| Datum | $DATETIME |
| Branch | \`$BRANCH\` |
| Commit | \`$FULL_HASH\` |
| Autor | $AUTHOR |

## Commit Message

\`\`\`
$MSG
\`\`\`

## Geänderte Dateien

| Status | Datei |
|---|---|
$CHANGED_FILES

---
*Automatisch generiert durch post-commit hook – kein KI-Inhalt.*
*Für KI-generierte Zusammenfassung: Copilot Chat → \`/history\`*
EOF

# Staging-Info ausgeben (nicht automatisch stagen – vermeidet Komplikationen)
echo ""
echo "  ✓ history: $(basename "$OUTFILE") geschrieben"
echo "    → wird beim nächsten Commit automatisch erfasst"
