upgrade go binary
·1 min
https://gist.github.com/nikhita/432436d570b89cab172dcf2894465753 https://github.com/eduncan911/dotfiles/blob/master/bin/upgrade-go.sh #!/bin/bash set -o errexit function _upgrade_go_binary { go_latest_version=$(curl --silent https://go.dev/doc/devel/release | grep -Eo 'go[0-9]+(\.[0-9]+)+' | sort -V | uniq | tail -1) # go_latest_version="go1.20rc3" if [[ $go_latest_version == "" ]]; then echo "Skipping Go binary upgrade (no version found)." return fi if [ -d ~/Sdk/go/$go_latest_version ]; then echo "Lastest version of Go already installed, skipping upgrade." return fi [[ $(hash go 2>/dev/null) ]] && go version echo "Upgrading to $go_latest_version" # compatible with Linux and Darwin (maybe windows too) local GO_LATEST_FILENAME="$go_latest_version.$(uname -s | \ tr '[:upper:]' '[:lower:]')-amd64.tar.gz" echo "Downloading $GO_LATEST_FILENAME to ~/.bin/go/$GO_LATEST_FILENAME" wget https://dl.google.com/go/$GO_LATEST_FILENAME -O /tmp/$GO_LATEST_FILENAME echo "Installing $GO_LATEST_FILENAME" cd ~/Sdk/go tar zxf /tmp/$GO_LATEST_FILENAME rm /tmp/$GO_LATEST_FILENAME mv go $go_latest_version ln -sfn ~/Sdk/go/$go_latest_version ~/Sdk/go/current go version } if [[ -d ~/Sdk/go ]]; then _upgrade_go_binary echo "Skipped upgrading binary. source is now paged." else echo "No custom ~/Sdk/go/ detected. Using system installed version." fi unset _upgrade_go_binary if [[ ! -x "$(which go)" ]]; then echo "Go is not installed. Exiting." exit 3 fi