#!/bin/sh
# RepoMap auto-update hook (post-checkout)
# This hook runs after git checkout

# Arguments:
# $1 - previous HEAD ref
# $2 - new HEAD ref
# $3 - flag (1 = branch checkout, 0 = file checkout)

PREV_HEAD=$1
NEW_HEAD=$2
IS_BRANCH_CHECKOUT=$3

# Only run on branch checkout, not file checkout
if [ "$IS_BRANCH_CHECKOUT" != "1" ]; then
    exit 0
fi

# Check if repomap is available
if ! command -v repomap >/dev/null 2>&1; then
    exit 0
fi

# Check if .repomap directory exists (project is initialized)
if [ ! -d ".repomap" ]; then
    exit 0
fi

# Check if any C# files changed between branches
CHANGED=$(git diff --name-only "$PREV_HEAD" "$NEW_HEAD" 2>/dev/null | grep -E "\.cs$" | head -1)

if [ -n "$CHANGED" ]; then
    echo "[RepoMap] Branch changed with C# updates, updating repo map..."
    repomap generate --notify
fi
