diff --git a/hack/install_golangci.sh b/hack/install_golangci.sh index 7385e230da..fa3652eab1 100755 --- a/hack/install_golangci.sh +++ b/hack/install_golangci.sh @@ -3,10 +3,13 @@ # This script is intended to be a convenience, to be called from the # Makefile `.install.golangci-lint` target. Any other usage is not recommended. -die() { echo "${1:-No error message given} (from $(basename $0))"; exit 1; } +die() { echo "${1:-No error message given} (from $(basename "$0"))"; exit 1; } [ -n "$VERSION" ] || die "\$VERSION is empty or undefined" +# Strip the leading v, if found. +VERSION=${VERSION#v} + function install() { local retry=$1 @@ -14,27 +17,20 @@ function install() { if [[ $retry -ne 0 ]]; then msg+=" - retry #$retry" fi - echo $msg + echo "$msg" - curl -sSL --retry 5 https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v$VERSION + curl -sSfL --retry 5 https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $BINDIR "v$VERSION" } -# Undocumented behavior: golangci-lint installer requires $BINDIR in env, -# will default to ./bin but we can't rely on that. -export BINDIR="./bin" +BINDIR="./bin" BIN="$BINDIR/golangci-lint" -if [ ! -x "$BIN" ]; then - # This flakes much too frequently with "crit unable to find v1.51.1" - for retry in $(seq 0 5); do - install $retry && exit 0 - sleep 5 - done -else - # Prints its own file name as part of --version output - $BIN --version | grep "$VERSION" - if [ $? -eq 0 ]; then - echo "Using existing $BINDIR/$($BIN --version)" - else - install - fi +if [ -x "$BIN" ] && $BIN --version | grep "$VERSION"; then + echo "Using existing $BIN" + exit 0 fi + +# This flakes much too frequently with "crit unable to find v1.51.1" +for retry in $(seq 0 5); do + install "$retry" && exit 0 + sleep 5 +done