#!/usr/bin/env bash
set -euo pipefail

source "$(cd "$(dirname "$0")" && pwd)/build-backend-env"

backend="$(meerkat_selected_build_backend)"
args=()

usage() {
  cat <<'EOF'
usage: agent-gate [--cargo|--buildbuddy] [gate args...]

Runs the standard changed-path agent gate. Cargo is the default backend so the
command works for every developer. BuildBuddy remains opt-in:

  scripts/agent-gate --buildbuddy --working-tree
  MEERKAT_BUILDBUDDY=1 scripts/agent-gate --committed

All remaining arguments are passed through to scripts/cargo-agent-gate or
scripts/buildbuddy-agent-gate.
EOF
}

while [[ $# -gt 0 ]]; do
  case "$1" in
    --cargo)
      backend="cargo"
      shift
      ;;
    --buildbuddy)
      backend="buildbuddy"
      shift
      ;;
    -h|--help)
      usage
      exit 0
      ;;
    --)
      shift
      args+=("$@")
      break
      ;;
    *)
      args+=("$1")
      shift
      ;;
  esac
done

workspace_root="$(git rev-parse --show-toplevel)"
cd "${workspace_root}"

case "${backend}" in
  cargo)
    exec ./scripts/cargo-agent-gate "${args[@]}"
    ;;
  buildbuddy)
    exec ./scripts/buildbuddy-agent-gate "${args[@]}"
    ;;
  *)
    echo "unknown agent gate backend: ${backend}" >&2
    usage >&2
    exit 2
    ;;
esac
