#!/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