2017-06-28 11:26:42 +00:00
|
|
|
# Load a go version.
|
|
|
|
# If no version is provided, 'stable' will be loaded.
|
|
|
|
load-go() {
|
|
|
|
# check if gimme is available (unfortunately eval does not return a non-zero
|
|
|
|
# value if the command is not found, therefore we need to check before)
|
|
|
|
gimme &>/dev/null
|
|
|
|
if [[ $? == 127 ]] ; then
|
|
|
|
echo "gimme was not found in your PATH.
|
|
|
|
Run install-gimme and make sure to add ~/bin to your PATH."
|
|
|
|
return 1
|
|
|
|
fi
|
2017-07-27 10:52:38 +00:00
|
|
|
if [[ "$#" > 1 ]] ; then
|
|
|
|
echo "Usage: load-go GO_VERSION"
|
|
|
|
return 0
|
|
|
|
elif [[ "$#" == 0 ]] ; then
|
2017-06-28 11:26:42 +00:00
|
|
|
eval "$(gimme stable)"
|
|
|
|
else
|
|
|
|
eval "$(gimme ${*})"
|
|
|
|
fi
|
|
|
|
return $?
|
|
|
|
}
|
|
|
|
|
|
|
|
# alias for gimme -l
|
|
|
|
alias go-versions='gimme -l'
|
|
|
|
|
|
|
|
# download latest version of gimme
|
|
|
|
install-gimme() {
|
|
|
|
if ! [ -d ~/bin ] ; then
|
|
|
|
mkdir ~/bin || return 1
|
|
|
|
fi
|
|
|
|
curl -sL -o ~/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme
|
|
|
|
chmod +x ~/bin/gimme || return 1
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
# remove go version from ~/.gimme/*
|
|
|
|
remove-go() {
|
|
|
|
if [[ "$#" != 1 ]] ; then
|
|
|
|
echo "Usage: remove-go GO_VERSION"
|
|
|
|
return 0
|
|
|
|
else
|
|
|
|
if [ "$1" = "stable" ] ; then
|
|
|
|
if ! [ -e ~/.gimme/versions/stable ] ; then
|
|
|
|
echo "go version stable is not installed"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
version="$(cat ~/.gimme/versions/stable)" || return 1
|
|
|
|
rm ~/.gimme/versions/stable || return 1
|
|
|
|
else
|
|
|
|
version="$1"
|
|
|
|
fi
|
|
|
|
if ! [ $(ls ~/.gimme/versions | grep "$version") ] ; then
|
|
|
|
echo "go version $version is not installed"
|
|
|
|
return 0
|
|
|
|
else
|
|
|
|
rm -r ~/.gimme/versions/go"$version"* || return 1
|
|
|
|
rm ~/.gimme/envs/go"$version"* || return 1
|
|
|
|
fi
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# gimme completion
|
|
|
|
__gimme_completion() {
|
|
|
|
local version_1 version_2 version_3
|
|
|
|
version_1="1.8.3"
|
|
|
|
version_2="1.7.6"
|
|
|
|
version_3="1.6.4"
|
|
|
|
local context state state_descr line
|
|
|
|
typeset -a go_versions
|
|
|
|
go_versions+=(
|
|
|
|
'(help version force list tip '$version_1' '$version_2' '$version_3' \
|
|
|
|
)stable[install latest stable go version]'
|
|
|
|
'(help version force list stable '$version_1' '$version_2' '$version_3' \
|
|
|
|
)tip[install development version (master branch) of go]'
|
|
|
|
'(help version force list stable tip '$version_2' '$version_3' \
|
|
|
|
)'$version_1'[install go version '$version_1']'
|
|
|
|
'(help version force list stable tip '$version_1' '$version_3' \
|
|
|
|
)'$version_2'[install go version '$version_2']'
|
|
|
|
'(help version force list stable tip '$version_1' '$version_2' \
|
|
|
|
)'$version_3'[install go version '$version_3']'
|
|
|
|
)
|
|
|
|
typeset -a flags
|
|
|
|
flags+=(
|
|
|
|
'(version force list stable tip '$version_1' '$version_2' \
|
|
|
|
'$version_3')help[show help text and exit]'
|
|
|
|
'(help force list stable tip '$version_1' '$version_2' \
|
|
|
|
'$version_3')version[show the gimme version only and exit]'
|
|
|
|
'(help version list)force[remove the existing go installation if present prior to install]'
|
|
|
|
'(help version force stable tip '$version_1' '$version_2' \
|
|
|
|
'$version_3')list[list installed go versions and exit]'
|
|
|
|
)
|
|
|
|
_values -w 'flags go_versions' ${flags[@]} ${go_versions[@]}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
__load-go_completion() {
|
|
|
|
local version_1 version_2 version_3
|
|
|
|
version_1="1.8.3"
|
|
|
|
version_2="1.7.6"
|
|
|
|
version_3="1.6.4"
|
|
|
|
local context state state_descr line
|
|
|
|
typeset -a go_versions
|
|
|
|
go_versions+=(
|
|
|
|
'(tip '$version_1' '$version_2' '$version_3' \
|
|
|
|
)stable[latest stable go version]'
|
|
|
|
'(stable '$version_1' '$version_2' '$version_3' \
|
|
|
|
)tip[development version (master branch) of go]'
|
|
|
|
'(stable tip '$version_2' '$version_3' \
|
|
|
|
)'$version_1'[go version '$version_1']'
|
|
|
|
'(stable tip '$version_1' '$version_3' \
|
|
|
|
)'$version_2'[go version '$version_2']'
|
|
|
|
'(stable tip '$version_1' '$version_2' \
|
|
|
|
)'$version_3'[go version '$version_3']'
|
|
|
|
)
|
|
|
|
_values 'go_versions' ${go_versions[@]}
|
|
|
|
}
|
|
|
|
|
|
|
|
compdef __gimme_completion gimme
|
|
|
|
compdef __load-go_completion load-go
|