Browse Source

style(rbfu): clean up code

Marc Cornellà 2 years ago
parent
commit
7b12fa9799
2 changed files with 42 additions and 35 deletions
  1. 1 0
      plugins/rbfu/README.md
  2. 41 35
      plugins/rbfu/rbfu.plugin.zsh

+ 1 - 0
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)
 ```

+ 41 - 35
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
-
-if [[ $? -eq 0 ]]; then
-  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
-  }
-
-  # 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
-  }
-
-  # 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
+command -v rbfu &>/dev/null || return
+
+eval "$(rbfu --init --auto)"
+
+# 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"
+
+  # If the ruby is a symlink, add @ to the name.
+  if [[ -h "$1" ]]; then
+    rb_out="${rb_out}${fg[green]}@${reset_color}"
+  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}" }