From af120ab348f2e1a5a39dec035ed9dcf84189a64e Mon Sep 17 00:00:00 2001
From: Biswakalyan Bhuyan <biswa@surgot.in>
Date: Mon, 3 Oct 2022 21:42:20 +0530
Subject: dotfiles

---
 zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh | 94 ++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh

(limited to 'zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh')

diff --git a/zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh b/zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh
new file mode 100644
index 0000000..d7a28d4
--- /dev/null
+++ b/zsh/oh-my-zsh/plugins/chruby/chruby.plugin.zsh
@@ -0,0 +1,94 @@
+## load chruby from different locations
+
+_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
+
+  if [[ -r ${_chruby_auto} ]]; then
+    source ${_chruby_auto}
+  fi
+}
+
+_source-from-homebrew() {
+  (( $+commands[brew] )) || return 1
+
+  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
+
+  [[ -r "$_brew_prefix" ]] || return 1
+
+  source $_brew_prefix/share/chruby/chruby.sh
+  source $_brew_prefix/share/chruby/auto.sh
+}
+
+_load-chruby-dirs() {
+  local dir
+  for dir in "$HOME/.rubies" "$PREFIX/opt/rubies"; do
+    if [[ -d "$dir" ]]; then
+      RUBIES+=("$dir")
+    fi
+  done
+}
+
+# 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
+  _load-chruby-dirs
+elif _source-from-homebrew; then
+  _load-chruby-dirs
+fi
+
+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
+}
+
+function chruby_prompt_info() {
+  echo "${$(current_ruby):gs/%/%%}"
+}
+
+# Complete chruby command with installed rubies
+_chruby() {
+  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
-- 
cgit v1.2.3-59-g8ed1b