mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| ## 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
 |