claude-hooks/hooks-v2/sessionstart-hook-autoupdate.sh

34 lines
915 B
Bash

#!/bin/bash
# SessionStart: Hook-Scripts automatisch vom Hub aktualisieren (max 1x/Stunde)
LOCK="/tmp/claude-hooks-update.lock"
LOCAL_REPO="$HOME/git/claude-hooks"
HOOKS_DIR="$HOME/.claude/hooks-v2"
LAST_UPDATE="$HOME/.claude/hooks-v2/.last-update"
# Max 1x pro Stunde updaten
if [ -f "$LAST_UPDATE" ]; then
LAST=$(cat "$LAST_UPDATE" 2>/dev/null || echo 0)
NOW=$(date +%s)
DIFF=$((NOW - LAST))
[ $DIFF -lt 3600 ] && exit 0
fi
# Nicht parallel laufen
[ -f "$LOCK" ] && exit 0
touch "$LOCK"
trap "rm -f $LOCK" EXIT
if [ -d "$LOCAL_REPO/.git" ]; then
cd "$LOCAL_REPO"
BEFORE=$(git rev-parse HEAD 2>/dev/null)
git pull origin main -q 2>/dev/null
AFTER=$(git rev-parse HEAD 2>/dev/null)
if [ "$BEFORE" != "$AFTER" ]; then
cp "$LOCAL_REPO/hooks-v2/"*.sh "$HOOKS_DIR/" 2>/dev/null
chmod +x "$HOOKS_DIR/"*.sh
echo "🔄 Claude Hooks aktualisiert von Hub"
fi
fi
date +%s > "$LAST_UPDATE"