#!/usr/bin/env bash
# Lists all available versions of MockServer CLI from GitHub Releases.
# Called by asdf/mise to populate the version list.

set -euo pipefail

# Fetch release tags from GitHub API, strip the "mockserver-" prefix,
# sort by semver, and output space-separated.
# TODO(cli-release): Confirm the tag prefix matches actual GitHub Release tags.

github_releases() {
  local repo="mock-server/mockserver-monorepo"
  local url="https://api.github.com/repos/$repo/releases"
  local page=1
  local per_page=100

  while true; do
    local response
    response=$(curl -fsSL \
      ${GITHUB_API_TOKEN:+-H "Authorization: Bearer $GITHUB_API_TOKEN"} \
      "$url?per_page=$per_page&page=$page")

    local tags
    tags=$(echo "$response" | grep -oP '"tag_name":\s*"\Kmockserver-[^"]+' | sed 's/^mockserver-//' || true)

    if [[ -z "$tags" ]]; then
      break
    fi

    echo "$tags"
    page=$((page + 1))
  done
}

github_releases | sort -t. -k1,1n -k2,2n -k3,3n | tr '\n' ' '
echo
