#!/usr/bin/env bash
# Wait for an HTTP service to respond with 2xx.
# Usage: wait-for-service.sh <url> [timeout_seconds] [label]
set -euo pipefail

URL="${1:?Usage: wait-for-service.sh <url> [timeout_seconds] [label]}"
TIMEOUT="${2:-120}"
LABEL="${3:-$URL}"
INTERVAL=5

ATTEMPTS=$((TIMEOUT / INTERVAL))
if (( ATTEMPTS < 1 )); then ATTEMPTS=1; fi

for i in $(seq 1 "$ATTEMPTS"); do
  if curl -sf --max-time 3 "$URL" > /dev/null 2>&1; then
    echo "[wait] $LABEL healthy after $((i * INTERVAL))s"
    exit 0
  fi
  echo "[wait] ($i/$ATTEMPTS) $LABEL not ready..."
  sleep "$INTERVAL"
done

echo "[wait] ERROR: $LABEL not healthy after ${TIMEOUT}s"
echo "--- Diagnostic: $URL ---"
curl -v --max-time 5 "$URL" 2>&1 | head -20 || true
exit 1
