diff --git a/plugins/rbfu/README.md b/plugins/rbfu/README.md index f1f9fa2f7..fbcab64de 100644 --- a/plugins/rbfu/README.md +++ b/plugins/rbfu/README.md @@ -4,6 +4,7 @@ This plugin starts [rbfu](https://github.com/hmans/rbfu), a minimal Ruby version manager, and adds some useful functions. To use it, add `rbfu` to the plugins array in your zshrc file: + ```zsh plugins=(... rbfu) ``` diff --git a/plugins/rbfu/rbfu.plugin.zsh b/plugins/rbfu/rbfu.plugin.zsh index 008485205..c973fbf9f 100644 --- a/plugins/rbfu/rbfu.plugin.zsh +++ b/plugins/rbfu/rbfu.plugin.zsh @@ -5,38 +5,44 @@ # rvm_prompt_info function to return the $RBFU_RUBY_VERSION # version. -command -v rbfu &>/dev/null +command -v rbfu &>/dev/null || return -if [[ $? -eq 0 ]]; then - eval "$(rbfu --init --auto)" +eval "$(rbfu --init --auto)" - # Internal: Print ruby version details, if it's currently - # active etc. - function _rbfu_rubies_print() { - local rb rb_out - rb=$(basename $1) - rb_out="$rb" - [[ -h $1 ]] && rb_out="$rb_out${fg[green]}@${reset_color}" - [[ "x$rb" == "x$2" ]] && rb_out="${fg[red]}$rb_out ${fg[red]}*${reset_color}" - echo $rb_out - } +# Internal: Print ruby version details, if it's currently active, etc. +function _rbfu_rubies_print() { + # 1: path to ruby file + # 2: active ruby + local rb rb_out + rb="${$1:t}" + rb_out="$rb" - # Public: Provide a list with all available rubies, this basically depends - # on `ls -1` and .rfbu/rubies. Highlights the currently active ruby version - # and aliases. - function rbfu-rubies() { - local rbfu_dir active_rb - rbfu_dir=$RBFU_RUBIES - active_rb=$RBFU_RUBY_VERSION - [[ -z "$rbfu_dir" ]] && rbfu_dir="${HOME}/.rbfu/rubies" - [[ -z "$active_rb" ]] && active_rb="system" - _rbfu_rubies_print "${rbfu_dir}/system" $active_rb - for rb in $(ls -1 $rbfu_dir); do - _rbfu_rubies_print "${rbfu_dir}/${rb}" $active_rb - done - } + # If the ruby is a symlink, add @ to the name. + if [[ -h "$1" ]]; then + rb_out="${rb_out}${fg[green]}@${reset_color}" + fi - # Public: Create rvm_prompt_info command for themes compatibility, unless - # it has already been defined. - [ ! -x rvm_prompt_info ] && function rvm_prompt_info() { echo "${RBFU_RUBY_VERSION:=system}" } -fi + # If the ruby is active, add * to the name and show it in red. + if [[ "$rb" = "$2" ]]; then + rb_out="${fg[red]}${rb_out} ${fg[red]}*${reset_color}" + fi + + echo $rb_out +} + +# Public: Provide a list with all available rubies, this basically depends +# on ~/.rfbu/rubies. Highlights the currently active ruby version and aliases. +function rbfu-rubies() { + local rbfu_dir active_rb + rbfu_dir="${RBFU_RUBIES:-${HOME}/.rbfu/rubies}" + active_rb="${RBFU_RUBY_VERSION:-system}" + + _rbfu_rubies_print "${rbfu_dir}/system" "$active_rb" + for rb in ${rbfu_dir}/*(N); do + _rbfu_rubies_print "$rb" "$active_rb" + done +} + +# Public: Create rvm_prompt_info command for themes compatibility, unless +# it has already been defined. +[ ! -x rvm_prompt_info ] && function rvm_prompt_info() { echo "${RBFU_RUBY_VERSION:=system}" }