Skip to content

Instantly share code, notes, and snippets.

@jnunemaker
Forked from jseifer/gist:468075
Created July 8, 2010 14:52
Show Gist options
  • Save jnunemaker/468109 to your computer and use it in GitHub Desktop.
Save jnunemaker/468109 to your computer and use it in GitHub Desktop.
rvm version and git branch/dirtyness in prompt
function __git_dirty {
git diff --quiet HEAD &>/dev/null
[ $? == 1 ] && echo "!"
}
function __git_branch {
__git_ps1 "(%s)"
}
function __my_rvm_ruby_version {
local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}')
[ "$gemset" != "" ] && gemset="@$gemset"
local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}')
[ "$version" == "1.8.7" ] && version=""
local full="$version$gemset"
[ "$full" != "" ] && echo "$full "
}
# via http://tammersaleh.com/posts/a-better-rvm-bash-prompt
bash_prompt() {
local NONE="\[\033[0m\]" # unsets color to term's fg color
# regular colors
local K="\[\033[0;30m\]" # black
local R="\[\033[0;31m\]" # red
local G="\[\033[0;32m\]" # green
local Y="\[\033[0;33m\]" # yellow
local B="\[\033[0;34m\]" # blue
local M="\[\033[0;35m\]" # magenta
local C="\[\033[0;36m\]" # cyan
local W="\[\033[0;37m\]" # white
local UC=$W # user's color
[ $UID -eq "0" ] && UC=$R # root's color
PS1="$W\$(__my_rvm_ruby_version)$R\w $Y\$(__git_branch)$R\$(__git_dirty)${NONE}$ "
}
bash_prompt
unset bash_prompt
@jodosha
Copy link

jodosha commented Jul 8, 2010

-bash: __git_ps1: command not found

Maybe you forgot to declare a function here.

@shenie
Copy link

shenie commented Jul 8, 2010

"__git_ps1" comes from .git-completion.bash (download from git repo) which you have to source first in your profile before this.

@granth
Copy link

granth commented Jul 8, 2010

__git_dirty doesn't catch new files that haven't been git-added. You can use git-status for a more thorough but slower version:

git_dirty() {
  [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]]
}

@MasterLambaster
Copy link

I think better to use built-in rvm prompt builder rvm-prompt. At least it's more powerful and allows to output any info about the current ruby and system version.

And what I personally use is Oh My ZSH with all it's nice themes

@jodosha
Copy link

jodosha commented Jul 9, 2010

I don't like the empty parenthesis when not in a git project, i slightly changed __git_branch:

function __git_branch {
  local branch=$(__git_ps1 "%s")
  if [ "$branch" != "" ]; then
    echo "($branch)"
  fi
}

and:

PS1="$W\$(__my_rvm_ruby_version)$W\w $G\$(__git_branch)$EMR\$(__git_dirty)${NONE}$ "

@jnunemaker
Copy link
Author

Yeah, me either. I updated it yesterday but forgot to update gist. Gist is up to date now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment