summaryrefslogtreecommitdiff
path: root/plugins/chruby/chruby.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/chruby/chruby.plugin.zsh')
-rw-r--r--plugins/chruby/chruby.plugin.zsh165
1 files changed, 69 insertions, 96 deletions
diff --git a/plugins/chruby/chruby.plugin.zsh b/plugins/chruby/chruby.plugin.zsh
index 32f0525aa..d7a28d4e2 100644
--- a/plugins/chruby/chruby.plugin.zsh
+++ b/plugins/chruby/chruby.plugin.zsh
@@ -1,121 +1,94 @@
-#
-# 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
+## load chruby from different locations
-# rvm and rbenv plugins also provide this alias
-alias rubies='chruby'
+_source-from-omz-settings() {
+ local _chruby_path _chruby_auto
+
+ zstyle -s :omz:plugins:chruby path _chruby_path || return 1
+ zstyle -s :omz:plugins:chruby auto _chruby_auto || return 1
+ if [[ -r ${_chruby_path} ]]; then
+ source ${_chruby_path}
+ fi
-_homebrew-installed() {
- whence brew &> /dev/null
- _xit=$?
- if [ $_xit -eq 0 ];then
- # ok , we have brew installed
- # speculatively we check default brew prefix
- if [ -h /usr/local/opt/chruby ];then
- _brew_prefix="/usr/local/opt/chruby"
- else
- # ok , it is not default prefix
- # this call to brew is expensive ( about 400 ms ), so at least let's make it only once
- _brew_prefix=$(brew --prefix chruby)
- fi
- return 0
- else
- return $_xit
- fi
+ if [[ -r ${_chruby_auto} ]]; then
+ source ${_chruby_auto}
+ fi
}
-_chruby-from-homebrew-installed() {
- [ -r $_brew_prefix ] &> /dev/null
-}
+_source-from-homebrew() {
+ (( $+commands[brew] )) || return 1
-_ruby-build_installed() {
- whence ruby-build &> /dev/null
-}
+ local _brew_prefix
+ # check default brew prefix
+ if [[ -h /usr/local/opt/chruby ]];then
+ _brew_prefix="/usr/local/opt/chruby"
+ else
+ # ok , it is not default prefix
+ # this call to brew is expensive ( about 400 ms ), so at least let's make it only once
+ _brew_prefix=$(brew --prefix chruby)
+ fi
-_ruby-install-installed() {
- whence ruby-install &> /dev/null
-}
+ [[ -r "$_brew_prefix" ]] || return 1
-# 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() {
- local _chruby_path
- local _chruby_auto
-
- zstyle -s :omz:plugins:chruby path _chruby_path
- zstyle -s :omz:plugins:chruby auto _chruby_auto
-
- if [[ -r ${_chruby_path} ]]; then
- source ${_chruby_path}
- fi
-
- if [[ -r ${_chruby_auto} ]]; then
- source ${_chruby_auto}
- fi
+ source $_brew_prefix/share/chruby/chruby.sh
+ source $_brew_prefix/share/chruby/auto.sh
}
-_chruby_dirs() {
- chrubydirs=($HOME/.rubies/ $PREFIX/opt/rubies)
- for dir in chrubydirs; do
- if [[ -d $dir ]]; then
- RUBIES+=$dir
- fi
- done
+_load-chruby-dirs() {
+ local dir
+ for dir in "$HOME/.rubies" "$PREFIX/opt/rubies"; do
+ if [[ -d "$dir" ]]; then
+ RUBIES+=("$dir")
+ fi
+ done
}
-if _homebrew-installed && _chruby-from-homebrew-installed ; then
- source $_brew_prefix/share/chruby/chruby.sh
- source $_brew_prefix/share/chruby/auto.sh
- _chruby_dirs
+# Load chruby
+if _source-from-omz-settings; then
+ _load-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
+ source /usr/local/share/chruby/chruby.sh
+ source /usr/local/share/chruby/auto.sh
+ _load-chruby-dirs
+elif _source-from-homebrew; then
+ _load-chruby-dirs
fi
-function ensure_chruby() {
- $(whence chruby)
-}
+unfunction _source-from-homebrew _source-from-omz-settings _load-chruby-dirs
+
+
+## chruby utility functions and aliases
+
+# rvm and rbenv plugins also provide this alias
+alias rubies='chruby'
function current_ruby() {
- local _ruby
- _ruby="$(chruby |grep \* |tr -d '* ')"
- if [[ $(chruby |grep -c \*) -eq 1 ]]; then
- echo ${_ruby}
- else
- echo "system"
- fi
+ 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)"
+ echo "${$(current_ruby):gs/%/%%}"
}
-# complete on installed rubies
+# Complete chruby command with installed rubies
_chruby() {
- compadd $(chruby | tr -d '* ')
- local default_path='/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'
- if PATH=${default_path} type ruby &> /dev/null; then
- compadd system
- fi
+ compadd $(chruby | tr -d '* ')
+ if PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" command ruby &>/dev/null; then
+ compadd system
+ fi
}
+
compdef _chruby chruby
+
+
+# Simple definition completer for ruby-build
+if command ruby-build &> /dev/null; then
+ _ruby-build() { compadd $(ruby-build --definitions) }
+ compdef _ruby-build ruby-build
+fi