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

REPO="${REPO:-open-gsd/gsd-core}"
ENFORCEMENT="${ENFORCEMENT:-evaluate}"

case "$ENFORCEMENT" in
  disabled|evaluate|active) ;;
  *)
    echo "ERROR: ENFORCEMENT must be one of: disabled|evaluate|active" >&2
    exit 1
    ;;
esac

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
RULESETS_DIR="$SCRIPT_DIR/../.github/rulesets"

for ruleset_file in "$RULESETS_DIR"/*.json; do
  name="$(jq -r '.name' "$ruleset_file")"

  body="$(jq --arg enforcement "$ENFORCEMENT" '.enforcement = $enforcement' "$ruleset_file")"

  existing_id="$(gh api "repos/$REPO/rulesets" --jq ".[] | select(.name==\"$name\") | .id" 2>/dev/null || true)"

  if [ -n "$existing_id" ]; then
    gh api --method PUT "repos/$REPO/rulesets/$existing_id" \
      --input - <<< "$body" > /dev/null
    echo "[update] $name -> enforcement=$ENFORCEMENT"
  else
    gh api --method POST "repos/$REPO/rulesets" \
      --input - <<< "$body" > /dev/null
    echo "[create] $name -> enforcement=$ENFORCEMENT"
  fi
done
