#!/usr/bin/env bash if [[ "$rvm_trace_flag" -eq 2 ]] ; then set -x ; export rvm_trace_flag ; fi # Query for valid rvm ruby strings # This is meant to be used with scripting. __rvm_list_strings() { echo $(\ls $rvm_rubies_path) } __rvm_list_default() { strings="$(echo $rvm_ruby_args | awk '{print $2}')" if [[ "$strings" = "string" ]] ; then $rvm_scripts_path/alias show default 2>/dev/null | awk -F"$rvm_gemset_separator" '{print $1}' | xargs basename else if [[ -L "$rvm_rubies_path/default" ]]; then version=$($rvm_scripts_path/alias show default 2>/dev/null | awk -F"$rvm_gemset_separator" '{print $1}' | xargs basename) if [[ ! -z "$version" ]] ; then printf "\n\nDefault Ruby (for new shells)\n" string="[ $(file $rvm_rubies_path/$version/bin/ruby | awk '/x86.64/ {print "x86_64"} /386/ {print "i386"} /ppc/ {print "ppc"}' | tr "\n" ' ')]" printf "\n $(tput setaf 2)$version$(tput sgr0) $string\n" fi ; unset version fi fi } __rvm_list_known() { while read -r tag do prefix="$(echo ${tag/\//} | sed 's#^v1_##' | awk -F'_' '{print "(ruby-)1."$1"."$2}' | sed 's#p$##')" echo "${prefix}-t${tag/\//}" unset prefix tag done < <(svn list http://svn.ruby-lang.org/repos/ruby/tags/ | awk '/^v1_[8|9]/') printf "\n(ruby-)1.8.6(-p399)\n(ruby-)1.8.6-head\n(ruby-)1.8.7(-p249)\n(ruby-)1.8.7-head\n(ruby-)1.9.1(-p243)\n(ruby-)1.9.1(-p376)\n(ruby-)1.9.1-head\n(ruby-)1.9.2-preview1\n(ruby-)1.9.2-head\nruby-head\n" printf "\njruby-1.2.0\njruby-1.3.1\njruby-1.4.0\njruby(-1.5.0) # the default\njruby-head" printf "\nrbx(-1.0.0) # default\nrbx-head" printf "\nree-1.8.6\nree(-1.8.7) # the default\nree-1.8.6-head\nree-1.8.7-head" printf "\nmaglev(-23530)\nmaglev-head" printf "\nmput(-head) # shyouhei head, the default mput" printf "\nironruby-0.9.3\nironruby-1.0-rc2\nironruby-head" if [[ "Darwin" = "$(uname)" ]] ; then printf "\nmacruby(-nightly) # the default macruby\nmacruby-head # Build from the macruby git repository" fi } __rvm_list_rubies() { echo ruby=$(command -v ruby) ; current_ruby="" if [[ ! -z "$ruby" ]] && [[ ! -z "$(echo $ruby | awk '/rvm/')" ]] ; then current_ruby="$(echo $ruby | xargs dirname | xargs dirname | xargs basename 2> /dev/null)" fi printf "rvm rubies\n" for version in $(\ls $rvm_rubies_path/ 2> /dev/null | awk '/[a-z]*-.*/ {print $NF}') ; do if [[ ! -z "$(echo $version | awk '/^jruby-/')" ]] ; then string="[ $($rvm_rubies_path/$version/bin/ruby -v | awk '{print $NF}') ]" elif [[ ! -z "$(echo $version | awk '/^maglev-|^macruby-/')" ]] ; then string="[ x86_64 ]" else string="[ $(file $rvm_rubies_path/$version/bin/ruby | awk '/x86.64/ {print "x86_64"} /386/ {print "i386"} /ppc/ {print "ppc"}' | tr "\n" ' ')]" fi printf "\n" if [[ "$version" = "$current_ruby" ]]; then printf "=> " else printf " " fi printf "$(tput setaf 2)$version$(tput sgr0) $string" done ; unset version if [[ -f "$rvm_config_path/default" ]] && [[ -s $rvm_config_path/default ]] ; then version=$(grep 'MY_RUBY_HOME' $rvm_config_path/default | head -n 1 | awk -F"'" '{print $2}' | xargs basename) if [[ ! -z "$version" ]] ; then printf "\n\nDefault Ruby (for new shells)\n" string="[ $(file $rvm_rubies_path/$version/bin/ruby | awk '/x86.64/ {print "x86_64"} /386/ {print "i386"} /ppc/ {print "ppc"}' | tr "\n" ' ')]" printf "\n $(tput setaf 2)$version$(tput sgr0) $string" fi ; unset version fi printf "\n" unset current_ruby version selected system_ruby system_version string binary echo } # List all rvm installed rubies, default ruby and system ruby. # Display the rubies, indicate their architecture and indicate which is currently used. # This is not meant to be used with scripting. This is for interactive mode usage only. action="$(echo "$1" | awk '{print $1}')" if [[ "known" = "$action" ]] ; then __rvm_list_known elif [[ "default" = "$action" ]] ; then __rvm_list_default elif [[ -z "$action" ]] || [[ "rubies" = "$action" ]] ; then __rvm_list_rubies elif [[ "strings" = "$action" ]] ; then __rvm_list_strings else # help printf "\nUsage: rvm list {known,default,rubies,strings}" fi exit $?