#!/bin/bash
# ── Veilig pushen naar main met meerdere gelijktijdige agents ────────────────
# Meerdere agents pushen parallel naar main; een kale `git push` verliest dan
# geregeld de race ("fetch first"). Dit script sluit die lus: rebase op de
# actuele main → snelle poort (tests + types + lint; de volledige poort mét
# build draaide vóór de commit en draait in CI) → push, en bij een nieuwe race
# gewoon opnieuw. Gebruik: `npm run duw` (na je commit).
set -euo pipefail
cd "$(dirname "$0")/.."

if ! git diff --quiet || ! git diff --cached --quiet; then
  echo "duw: er staan niet-gecommitteerde wijzigingen — commit (of stash) eerst." >&2
  exit 1
fi

for poging in 1 2 3 4; do
  VOOR=$(git rev-parse HEAD)
  git pull --rebase origin main

  # Enkel hertesten wanneer de rebase werk van een andere agent binnenhaalde
  # (HEAD kreeg dan een nieuwe hash); anders is de poort van vóór de commit
  # nog geldig.
  if [ "$(git rev-parse HEAD)" != "$VOOR" ]; then
    npm run poort:snel
  fi

  if git push origin main; then
    echo "duw: gepusht naar main (poging $poging)."
    exit 0
  fi
  echo "duw: race met een andere agent verloren (poging $poging) — opnieuw rebasen..."
done

echo "duw: na 4 pogingen nog steeds een race — kijk na of er iets structureels misloopt." >&2
exit 1
