83 lines
2.1 KiB
Bash
Executable File
83 lines
2.1 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
|
|
|
|
installed() { command -v "$1" >/dev/null 2>&1; }
|
|
|
|
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
|
|
|
|
local os="linux"
|
|
[ "$(uname -s)" = "Darwin" ] && os="darwin"
|
|
|
|
latestJson=$(echo "$json" | jq -r ".[0].files.[] | select (.kind == \"archive\" and .os == \"$os\" and .arch == \"amd64\")")
|
|
fileName=$(echo "$latestJson" | jq -r '.filename')
|
|
fileUrl="$dlUrl/$fileName"
|
|
downloadPath="$HOME/install"
|
|
archivePath="$downloadPath/$fileName"
|
|
doRemove
|
|
if [ ! -f "$archivePath" ]; then
|
|
if installed wget; then
|
|
wget -q --show-progress "$fileUrl" -O "$archivePath"
|
|
else
|
|
curl -fsSL "$fileUrl" -o "$archivePath"
|
|
fi
|
|
fi
|
|
sudo tar -xzf "$archivePath" -C /usr/local
|
|
sudo chown "$USER": -R /usr/local/go
|
|
if ! grep -q '/usr/local/go/bin' "$HOME/.profile" 2>/dev/null; then
|
|
echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile"
|
|
echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile"
|
|
fi
|
|
|
|
# shellcheck source=/dev/null
|
|
source "$HOME/.profile"
|
|
|
|
echo
|
|
go version
|
|
go install github.com/go-delve/delve/cmd/dlv@latest
|
|
echo "Finish!"
|
|
echo
|
|
}
|
|
|
|
upgrade() {
|
|
install
|
|
}
|
|
|
|
remove() {
|
|
echo
|
|
echo "==============================================="
|
|
echo "Removing golang"
|
|
echo "==============================================="
|
|
echo
|
|
doRemove
|
|
sed -i '/\/usr\/local\/go\/bin/d' "$HOME/.profile"
|
|
sed -i '/GOPATH/d' "$HOME/.profile"
|
|
echo
|
|
echo "Finish!"
|
|
echo
|
|
}
|
|
|
|
case "$1" in
|
|
u|upgrade|update) upgrade ;;
|
|
r|remove|d|delete|p|purge) remove ;;
|
|
*) install ;;
|
|
esac
|
|
|