#!/bin/bash
# worktree 내에서만 동작 (main에서는 스킵)
BRANCH=$(git -C "$PWD" rev-parse --abbrev-ref HEAD 2>/dev/null)
if [[ "$BRANCH" == "main" || "$BRANCH" == "master" ]]; then
    exit 0
fi

# git repo가 아닌 경우 스킵
if [[ -z "$BRANCH" ]]; then
    exit 0
fi

# 변경된 파일이 있으면 auto-commit
if git -C "$PWD" diff --quiet && git -C "$PWD" diff --cached --quiet; then
    exit 0
fi

# 디바운스: 마지막 커밋 후 30초 이내면 스킵
LAST_COMMIT=$(git -C "$PWD" log -1 --format=%ct 2>/dev/null || echo 0)
NOW=$(date +%s)
if (( NOW - LAST_COMMIT < 30 )); then
    exit 0
fi

git -C "$PWD" add -A
git -C "$PWD" commit -m "auto: micro-commit $(date +%H:%M:%S)" --no-verify 2>/dev/null

# auto-push: 10분 디바운스로 원격 push (백업)
LAST_PUSH_FILE="/tmp/.git-last-push-$(echo "$PWD" | md5sum | cut -c1-8)"
LAST_PUSH=$(cat "$LAST_PUSH_FILE" 2>/dev/null || echo 0)
if (( NOW - LAST_PUSH > 600 )); then
    if git -C "$PWD" push origin HEAD --quiet 2>/dev/null; then
        echo "$NOW" > "$LAST_PUSH_FILE"
    fi
fi
exit 0
