diff options
| author | Sean Escriva <sean.escriva@gmail.com> | 2013-11-16 15:39:01 -0800 | 
|---|---|---|
| committer | Sean Escriva <sean.escriva@gmail.com> | 2013-11-16 15:40:55 -0800 | 
| commit | 037b39a8172b8a268ca5c857e5badee047b32929 (patch) | |
| tree | deb79540bfb01a68ba73a62e885bb0606e074cb3 /plugins/chruby | |
| parent | 9f5a895192b7d6b75ba717ef4e2c9b6ed7977c68 (diff) | |
| download | zsh-037b39a8172b8a268ca5c857e5badee047b32929.tar.gz zsh-037b39a8172b8a268ca5c857e5badee047b32929.tar.bz2 zsh-037b39a8172b8a268ca5c857e5badee047b32929.zip | |
Add simple plugin for chruby ruby version manager
Diffstat (limited to 'plugins/chruby')
| -rw-r--r-- | plugins/chruby/chruby.plugin.zsh | 99 | 
1 files changed, 99 insertions, 0 deletions
| diff --git a/plugins/chruby/chruby.plugin.zsh b/plugins/chruby/chruby.plugin.zsh new file mode 100644 index 000000000..2a2c80cf6 --- /dev/null +++ b/plugins/chruby/chruby.plugin.zsh @@ -0,0 +1,99 @@ +# +# INSTRUCTIONS +# +#  With either a manual or brew installed chruby things should just work. +# +#  If you'd prefer to specify an explicit path to load chruby from +#  you can set variables like so: +# +#    zstyle :omz:plugins:chruby path /local/path/to/chruby.sh +#    zstyle :omz:plugins:chruby auto /local/path/to/auto.sh +#  +# TODO +#  - autodetermine correct source path on non OS X systems +#  - completion if ruby-install exists + +# rvm and rbenv plugins also provide this alias +alias rubies='chruby' + +local _chruby_path +local _chruby_auto + +_homebrew-installed() { +    whence brew &> /dev/null +} + +_chruby-from-homebrew-installed() { +    brew --prefix chruby &> /dev/null +} + +_ruby-build_installed() { +    whence ruby-build &> /dev/null +} + +_ruby-install-installed() { +    whence ruby-install &> /dev/null +} + +# Simple definition completer for ruby-build +if _ruby-build_installed; then +    _ruby-build() { compadd $(ruby-build --definitions) } +    compdef _ruby-build ruby-build +fi + +_source_from_omz_settings() { +    zstyle -s :omz:plugins:chruby path _chruby_path +    zstyle -s :omz:plugins:chruby auto _chruby_auto + +    if _chruby_path && [[ -r _chruby_path ]]; then +        source ${_chruby_path} +    fi + +    if _chruby_auto && [[ -r _chruby_auto ]]; then +        source ${_chruby_auto} +    fi +} + +_chruby_dirs() { +    chrubydirs=($HOME/.rubies/ $PREFIX/opt/rubies) +    for dir in chrubydirs; do +        if [[ -d $dir ]]; then +            RUBIES+=$dir +        fi +    done +} + +if _homebrew-installed && _chruby-from-homebrew-installed ; then +    source $(brew --prefix chruby)/share/chruby/chruby.sh +    source $(brew --prefix chruby)/share/chruby/auto.sh +    _chruby_dirs +elif [[ -r "/usr/local/share/chruby/chruby.sh" ]] ; then +    source /usr/local/share/chruby/chruby.sh +    source /usr/local/share/chruby/auto.sh +    _chruby_dirs +else +    _source_from_omz_settings +    _chruby_dirs +fi + +function ensure_chruby() { +    $(whence chruby) +} + +function current_ruby() { +    local _ruby +    _ruby="$(chruby |grep \* |tr -d '* ')" +    if [[ $(chruby |grep -c \*) -eq 1 ]]; then +        echo ${_ruby} +    else +        echo "system" +    fi +} + +function chruby_prompt_info() { +    echo "$(current_ruby)" +} + +# complete on installed rubies +_chruby() { compadd $(chruby | tr -d '* ') } +compdef _chruby chruby | 
