#!/usr/bin/env bash
# brain-distribuable: oui
# handoffs-satellite — la base suit les handoffs quand `handoffs/` est un satellite
#
# Lancé par les lanceurs qu'install-brain-hooks.sh pose dans `handoffs/.git/hooks`
# (post-commit, post-merge, post-rewrite), le nom du hook en premier argument.
#
# Dans le brain, ce sont ses propres hooks qui voient un commit toucher
# `handoffs/`. Satellite, plus aucun commit du brain ne le touche : sans ces
# lanceurs, la table `handoffs` de la base cesserait de suivre — en silence.
# Les mêmes règles que les hooks du brain : un worktree est une PR, pas la prod ;
# la fusion d'une PR arrive par `merge --ff-only` (post-merge) ; un `pull`
# divergent par un rebase (post-rewrite).

hook="${1:-}"
shift || true

SAT_WT="$(git rev-parse --show-toplevel)"
SAT_MAIN="$(cd "$SAT_WT" && cd "$(git rev-parse --git-common-dir)/.." && pwd)"
[[ "$SAT_WT" != "$SAT_MAIN" ]] && exit 0

BRAIN_MAIN="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"

case "$hook" in
    post-commit)  avant="HEAD~1" ;;
    post-merge)   avant="ORIG_HEAD" ;;
    post-rewrite) [[ "${1:-}" == "rebase" ]] || exit 0; avant="ORIG_HEAD" ;;
    *)            exit 0 ;;
esac

# Les chemins sont ceux du satellite : tout `.md` y est un handoff.
if git diff --name-only "$avant" HEAD 2>/dev/null | grep -q '\.md$'; then
    bash "$BRAIN_MAIN/scripts/brain-db-sync.sh" --quiet || true
fi
