go-switch
Switching between Go version with ease
➜ ~ go-switch list
go1.13.15
go1.15
go1.16
go1.16.13
go1.17.1
go1.18.7
#!/bin/bash | |
go_version=$1 | |
go_versions_path="" | |
go_symlink_path="/usr/bin/go" | |
if [[ "$go_version" == "" ]]; then | |
echo "Empty Go version, please use: go-switch [[Go version]]" | |
exit 1 | |
fi | |
if [[ "$go_version" == "list" ]]; then | |
ls $go_versions_path | egrep 'go.' | |
exit 0 | |
fi | |
# Check if version exists | |
if [[ -d "$go_versions_path/$go_version" ]] | |
then | |
: # no-op | |
else | |
echo "Go version of $go_version does not exist in $go_versions_path" | |
echo "Existing versions in $go_versions_path:" | |
echo $(ls $go_versions_path) | |
exit 1 | |
fi | |
# Replace existing Go in $GOROOT | |
rm -rf $go_versions_path/go | |
cp -r $go_versions_path/$go_version $go_versions_path/go | |
# Delete existing soft link | |
rm -f $go_symlink_path | |
# Create soft link | |
ln -s $go_versions_path/$go_version/bin/go $go_symlink_path | |
updated_go_version=$(go version) | |
if [[ "$updated_go_version" == *"$go_version"* ]] | |
then | |
echo "Go version updated to: $go_version" | |
else | |
echo "Error when updating Go version" | |
fi |