56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/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
|
|
|