#!/bin/sh
# go-min-bump.sh mod@minver ... — raise each module to AT LEAST minver (never downgrade; MVS may pick higher).
# Run in a Go module dir. Prints the resulting versions. Fails loudly on any go error.
set -eu
for spec in "$@"; do
  mod=${spec%@*}; min=${spec#*@}
  cur=$(go list -m -f '{{.Version}}' "$mod" 2>/dev/null || echo none)
  if [ "$cur" = none ]; then echo "skip $mod (not in build list)"; continue; fi
  hi=$(printf '%s\n%s\n' "${cur#v}" "${min#v}" | sort -V | tail -1)
  if [ "v$hi" != "$cur" ]; then go get "$mod@$min"; fi
done
# -e: tolerate unresolvable test-only imports of deps (e.g. otel sdk internaltest skew); build still verifies.
go mod tidy -e
for spec in "$@"; do mod=${spec%@*}; echo "$mod $(go list -m -f '{{.Version}}' "$mod" 2>/dev/null || echo -)"; done
