#!/usr/bin/env bash add(){ token=${1:-""} eval "${token}_flag=1" ; shift if [[ -n "$format" ]] ; then format="${format}-\$${token}" else format="\$${token}" fi return 0 } rvm_gemset_separator="${rvm_gemset_separator:-"@"}" ruby=$(command -v ruby) if [[ -n "$ruby" && -n "$(echo "$ruby" | awk '/rvm/{print}')" ]] ; then unset format while [[ $# -gt 0 ]] ; do token="$1" ; shift case "$token" in i|interpreter) add "interpreter" ;; v|version) add "version" ;; p|patchlevel) add "patchlevel" ;; r|revision) add "revision" ;; a|architecture) add "architecture" ;; g|gemset) add "gemset" ;; u|unicode) add "unicode" ;; s|system) add "system" ;; -d|--no-default) no_default=1 ;; *) echo "Unrecognized command line option '$token' for $0" ; exit 1 ;; esac done if [[ -z "$format" ]] ; then add "interpreter" add "version" add "patchlevel" add "gemset" fi ruby_string=$(dirname "$ruby" | xargs dirname | xargs basename) if [[ -n "$no_default" ]]; then # Do not display anything if no default flag was provided # and we are using the default ruby # Only people who explicitely ask for this will have the # slight performance penalty associated. if [[ "$(rvm tools identifier)" = "$(rvm alias show default)" ]] ; then exit 0 fi fi strings=(${ruby_string//-/ }) if [[ ${interpreter_flag:-0} -gt 0 || -n "$unicode_flag" ]] ; then interpreter=${strings[0]} fi if [[ ${version_flag:-0} -gt 0 || -n "$unicode_flag" ]] ; then version=${strings[1]} fi if [[ ${#strings[@]} -gt 2 ]] ; then if [[ ${patchlevel_flag:-0} -gt 0 ]] ; then patchlevel=${strings[2]} fi fi if [[ ${architecture_flag:-0} -gt 0 ]] ; then architecture="$(echo "$(ruby -v)" | sed 's/^.*\[//' | sed 's/\].*$//')" fi if [[ ${gemset_flag:-0} -gt 0 ]] ; then case "${GEM_HOME:-""}" in *${rvm_gemset_separator:-"@"}*) gemset="${rvm_gemset_separator:-"@"}${GEM_HOME/*${rvm_gemset_separator:-"@"}/}" ;; esac fi if [[ ${unicode_flag:-0} -gt 0 ]] ; then case "$interpreter" in jruby) unicode="☯" ;; rbx) unicode="☃" ;; ree) unicode="✈" ;; macruby) unicode="⌘" ;; maglev) unicode="㎖" ;; ironruby) unicode="♭" ;; mput) unicode="⎈" ;; system) unicode="➆" ;; ruby) case ${version:-""} in 1.8.6) unicode="❻" ;; 1.8.7) unicode="❼" ;; 1.9.1) unicode="❶" ;; 1.9.2) unicode="❷" ;; *) unicode="♢" ;; esac ;; *) unicode="♢" ;; esac if echo "$ruby_string" | \grep -q '-head' ; then unicode="${unicode}〠" fi fi eval "prompt=\"$format\"" echo "$prompt" \ | sed -e 's#^[[:space:]]*-*##g' \ -e 's#--*#-#g' \ -e 's#-*[[:space:]]*$##' \ -e 's#-'${rvm_gemset_separator:-"@"}'#'${rvm_gemset_separator:-"@"}'#' else while [[ $# -gt 0 ]] ; do token="$1" ; shift case "$token" in s|system) echo "system" ;; esac done fi exit 0