Skip to content

Instantly share code, notes, and snippets.

@melo
Created October 12, 2010 23:56

Revisions

  1. melo revised this gist Oct 13, 2010. 1 changed file with 23 additions and 9 deletions.
    32 changes: 23 additions & 9 deletions .bash_prompt
    Original file line number Diff line number Diff line change
    @@ -59,16 +59,20 @@ _update_prompt () {
    fi

    ## Color git status if any
    branch=`__git_ps1 "(%s)"`
    branch=`__git_ps1 " (%s)"`
    if [ -n "$branch" ] ; then
    ## Assumes that untracked files are always listed after modified ones
    ## True for all git versions I could find
    git status --porcelain | perl -ne 'exit(1) if /^ /; exit(2) if /^[?]/'
    case "$?" in
    "0" ) branch=" $e_green$branch$e_normal" ;;
    "1" ) branch=" $e_bred$branch$e_normal" ;;
    "2" ) branch=" $e_byellow$branch$e_normal" ;;
    esac
    local is_big_repo=`git config bash.big-repo`
    if [ -z "$is_big_repo" ] ; then
    ## Assumes that untracked files are always listed after modified ones
    ## True for all git versions I could find
    git status --porcelain | perl -ne 'exit(1) if /^ /; exit(2) if /^[?]/'
    case "$?" in
    "0" ) branch="$e_green$branch$e_normal" ;;
    "1" ) branch="$e_bred$branch$e_normal" ;;
    "2" ) branch="$e_byellow$branch$e_normal" ;;
    "130") git config bash.big-repo 1 ;;
    esac
    fi
    fi

    export PS1="$ex$_prompt $u$branch $p ";
    @@ -78,3 +82,13 @@ if [ -n "$PS1" ] ; then
    PROMPT_COMMAND='_update_prompt'
    export PROMPT_COMMAND
    fi

    # helper commands to explicitly change the setting:

    dumb_prompt () {
    git config bash.big-repo 1
    }

    smart_prompt () {
    git config --unset bash.big-repo
    }
  2. melo revised this gist Oct 13, 2010. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions .bash_prompt
    Original file line number Diff line number Diff line change
    @@ -5,6 +5,8 @@
    # Mostly copied from YUVAL KOGMAN version, added my own __git_ps1 stuff
    # Original: http://gist.github.com/621452
    #
    # See video demo of this at http://vimeo.com/15789794
    #
    # To enable save as .bash_prompt in $HOME and add to .bashrc:
    #
    # . ~/.bash_prompt
  3. melo created this gist Oct 12, 2010.
    78 changes: 78 additions & 0 deletions .bash_prompt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@
    #!/bin/bash
    #
    # PS1 magic
    #
    # Mostly copied from YUVAL KOGMAN version, added my own __git_ps1 stuff
    # Original: http://gist.github.com/621452
    #
    # To enable save as .bash_prompt in $HOME and add to .bashrc:
    #
    # . ~/.bash_prompt
    #
    # Pedro Melo, <[email protected]>

    _update_prompt () {
    ## Save $? early, we'll need it later
    local exit="$?"

    ## define some colors
    local red="31";
    local green="32";
    local yellow="33";
    local purple="35";
    local cyan="36";
    local white="37";

    local pre="\[\e[";
    local suf="\]";

    local e_green="${pre}0;${green}m$suf";
    local e_purple="${pre}0;${purple}m$suf";
    local e_cyan="${pre}0;${cyan}m$suf";
    local e_white="${pre}0;${white}m$suf";
    local e_bred="$pre$red;1m$suf";
    local e_byellow="$pre$yellow;1m$suf";

    local e_normal="\[\e[0;0m\]"

    ## Initial prompt
    _prompt="[$e_white\h$e_normal:$e_cyan\w$e_normal]";

    ## Color based on exit code
    local bul="\342\200\242" # bullet character
    case "$exit" in
    "0" ) ex="$e_green$bul$e_normal " ;;
    * ) ex="$e_bred$bul$e_normal " ;;
    esac

    ## Color current user
    local u;
    local p;
    if [ "$UID" = "0" ]; then
    u="$e_bred\u$e_normal";
    p="$e_bred#$e_normal";
    else
    u="$e_purple\u$e_normal";
    p="\$";
    fi

    ## Color git status if any
    branch=`__git_ps1 "(%s)"`
    if [ -n "$branch" ] ; then
    ## Assumes that untracked files are always listed after modified ones
    ## True for all git versions I could find
    git status --porcelain | perl -ne 'exit(1) if /^ /; exit(2) if /^[?]/'
    case "$?" in
    "0" ) branch=" $e_green$branch$e_normal" ;;
    "1" ) branch=" $e_bred$branch$e_normal" ;;
    "2" ) branch=" $e_byellow$branch$e_normal" ;;
    esac
    fi

    export PS1="$ex$_prompt $u$branch $p ";
    }

    if [ -n "$PS1" ] ; then
    PROMPT_COMMAND='_update_prompt'
    export PROMPT_COMMAND
    fi