gimme plugin: Initial commit

This commit is contained in:
Thomas Goldbrunner 2017-06-28 13:26:42 +02:00
parent d848c94804
commit cb54391572
No known key found for this signature in database
GPG Key ID: 3D1E9133640DA4FB
3 changed files with 155 additions and 0 deletions

21
plugins/gimme/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Thomas Goldbrunner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

17
plugins/gimme/README.md Normal file
View File

@ -0,0 +1,17 @@
### Gimme plugin for oh-my-zsh
[Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh/) plugin making life a
bit easier, when you use [gimme](https://github.com/travis-ci/gimme/) to manage
[go](https://golang.org) installations.
Provides following functions/aliases:
- ```go-versions```: Alias for ```gimme -l```
- ```install-gimme```: Download latest version of gimme to ~/bin
- ```load-go```: Load the go version specified by the first argument.
If called without argument, the 'stable' version will be loaded.
- ```remove-go```: Remove the go version specified by the first argument from
~/.gimme/*
- Completions for ```gimme``` and ```load-go```
```gimme``` is assumed to be in ```~/bin```, so make
sure to add this folder to the $PATH variable.

View File

@ -0,0 +1,117 @@
# 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
if [[ "$#" == 0 ]] ; then
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