#!/usr/bin/env bash ##makedesc: Install golang # https://go.dev/dl/ # https://golang.org/doc/install # https://github.com/udhos/update-golang/blob/master/update-golang.sh set -eo pipefail doRemove() { [ -d "/usr/local/go" ] && sudo rm -rf "/usr/local/go" } install() { dlUrl="https://go.dev/dl" json=$(curl -sSL "$dlUrl/?mode=json") version=$(echo "$json" | jq -r '.[0].version') echo echo "===============================================" echo "Installing golang v$version" echo "===============================================" echo latestJson=$(echo "$json" | jq -r '.[0].files.[] | select (.kind == "archive" and .os == "linux" and .arch == "amd64")') fileName=$(echo "$latestJson" | jq -r '.filename') fileUrl="$dlUrl/$fileName" downloadPath="$HOME/install" archivePath="$downloadPath/$fileName" doRemove [ -f "$archivePath" ] || wget "$fileUrl" -O "$archivePath" [ -f "$archivePath" ] && sudo tar -xzf "$archivePath" -C /usr/local sudo chown "$USER": -R /usr/local/go echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile" echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile" echo echo "Finish!" go version } remove() { echo echo "===============================================" echo "Removing golang" echo "===============================================" echo doRemove echo echo "Finish!" echo } case "$1" in r|remove|d|delete|p|purge) remove ;; *) install ;; esac