From 7b12fa9799edf07547cf5a55cf6518a4cb4c4852 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 13 Dec 2021 12:14:45 +0100 Subject: style(rbfu): clean up code --- plugins/rbfu/README.md | 1 + plugins/rbfu/rbfu.plugin.zsh | 76 ++++++++++++++++++++++++-------------------- 2 files changed, 42 insertions(+), 35 deletions(-) (limited to 'plugins/rbfu') 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 - -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}" } -- cgit v1.2.3-70-g09d2 From 9a3d853481645ae0f961e9cc8421fc5d84e2c3c3 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 13 Dec 2021 17:43:32 +0100 Subject: fix: quote % characters in ruby prompt info functions --- lib/prompt_info_functions.zsh | 2 +- plugins/chruby/chruby.plugin.zsh | 2 +- plugins/rbenv/rbenv.plugin.zsh | 4 ++-- plugins/rbfu/rbfu.plugin.zsh | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) (limited to 'plugins/rbfu') diff --git a/lib/prompt_info_functions.zsh b/lib/prompt_info_functions.zsh index 48f033da6..e5535848b 100644 --- a/lib/prompt_info_functions.zsh +++ b/lib/prompt_info_functions.zsh @@ -30,7 +30,7 @@ function rvm_prompt_info() { local rvm_prompt rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) [[ -z "${rvm_prompt}" ]] && return 1 - echo "${ZSH_THEME_RUBY_PROMPT_PREFIX}${rvm_prompt}${ZSH_THEME_RUBY_PROMPT_SUFFIX}" + echo "${ZSH_THEME_RUBY_PROMPT_PREFIX}${rvm_prompt:gs/%/%%}${ZSH_THEME_RUBY_PROMPT_SUFFIX}" } ZSH_THEME_RVM_PROMPT_OPTIONS="i v g" diff --git a/plugins/chruby/chruby.plugin.zsh b/plugins/chruby/chruby.plugin.zsh index 61ded3b73..d7a28d4e2 100644 --- a/plugins/chruby/chruby.plugin.zsh +++ b/plugins/chruby/chruby.plugin.zsh @@ -73,7 +73,7 @@ function current_ruby() { } function chruby_prompt_info() { - echo "$(current_ruby)" + echo "${$(current_ruby):gs/%/%%}" } # Complete chruby command with installed rubies diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index d36d4922c..d758aebae 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -47,7 +47,7 @@ if [[ $FOUND_RBENV -eq 1 ]]; then } function rbenv_prompt_info() { - local ruby=$(current_ruby) gemset=$(current_gemset) + local ruby=${$(current_ruby):gs/%/%%} gemset=${$(current_gemset):gs/%/%%} echo -n "${ZSH_THEME_RUBY_PROMPT_PREFIX}" [[ -n "$gemset" ]] && echo -n "${ruby}@${gemset}" || echo -n "${ruby}" echo "${ZSH_THEME_RUBY_PROMPT_SUFFIX}" @@ -60,7 +60,7 @@ else function gems() { echo "not supported" } function rbenv_prompt_info() { echo -n "${ZSH_THEME_RUBY_PROMPT_PREFIX}" - echo -n "system: $(ruby -v | cut -f-2 -d ' ')" + echo -n "system: $(ruby -v | cut -f-2 -d ' ' | sed 's/%/%%/g')" echo "${ZSH_THEME_RUBY_PROMPT_SUFFIX}" } fi diff --git a/plugins/rbfu/rbfu.plugin.zsh b/plugins/rbfu/rbfu.plugin.zsh index c973fbf9f..27dc3eec6 100644 --- a/plugins/rbfu/rbfu.plugin.zsh +++ b/plugins/rbfu/rbfu.plugin.zsh @@ -45,4 +45,5 @@ function rbfu-rubies() { # 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}" } +(( ${+functions[rvm_prompt_info]} )) || \ +function rvm_prompt_info() { echo "${${RBFU_RUBY_VERSION:=system}:gs/%/%%}" } -- cgit v1.2.3-70-g09d2