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

if [ "$#" -ne 2 ]; then
  echo "Usage: scripts/pr-prepare <init|validate-commit|gates|push|run> <PR>"
  exit 2
fi

mode="$1"
pr="$2"
script_dir="$(cd "$(dirname "$0")" && pwd)"
base="$script_dir/pr"
if common_git_dir=$(git -C "$script_dir" rev-parse --path-format=absolute --git-common-dir 2>/dev/null); then
  canonical_base="$(dirname "$common_git_dir")/scripts/pr"
  if [ -x "$canonical_base" ]; then
    base="$canonical_base"
  fi
fi

case "$mode" in
  init)
    exec "$base" prepare-init "$pr"
    ;;
  validate-commit)
    exec "$base" prepare-validate-commit "$pr"
    ;;
  gates)
    exec "$base" prepare-gates "$pr"
    ;;
  push)
    exec "$base" prepare-push "$pr"
    ;;
  run)
    exec "$base" prepare-run "$pr"
    ;;
  *)
    echo "Usage: scripts/pr-prepare <init|validate-commit|gates|push|run> <PR>"
    exit 2
    ;;
esac
