Sebastiaan van Stijn 535bb6c85c
rewrite using "with-go-mod.sh" script and "go run"
Use the same script as is used in moby/moby, which more gracefully
handles an existing `go.mod` (which can be symlinked) into account.

- keep the scripts called generic, and update the Makefile to invoke
  them with the "with-go-mod.sh" script.
- use "go run" instead of building temporary binaries
- check if go-md2man exists before building a binary

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-21 00:36:47 +01:00

53 lines
987 B
Bash
Executable File

#!/usr/bin/env bash
set -eu
TYP=$1
usage() {
echo "usage: ./scripts/vendor <init|update|validate|outdated>"
exit 1
}
if [ -z "$TYP" ]; then
usage
fi
update() {
(set -x ; go mod tidy -modfile=vendor.mod; go mod vendor -modfile=vendor.mod)
}
validate() {
diff=$(git status --porcelain -- vendor.mod vendor.sum vendor)
if [ -n "$diff" ]; then
echo >&2 'ERROR: Vendor result differs. Vendor your package with "make -f docker.Makefile vendor"'
echo "$diff"
exit 1
fi
}
outdated() {
if [ ! -x "$(command -v go-mod-outdated)" ]; then
echo "go-mod-outdated not found. Install with 'go install github.com/psampaz/go-mod-outdated@v0.8.0'"
exit 1
fi
(set -x ; go list -mod=vendor -mod=readonly -modfile=vendor.mod -u -m -json all | go-mod-outdated -update -direct)
}
case $TYP in
"update")
update
;;
"validate")
update
validate
;;
"outdated")
outdated
;;
*)
echo >&2 "Unknown type $TYP"
exit 1
;;
esac