by
0
130 Views
3 Badges
Top 5% !
Popular
Specified
Popularity: 18216th place
Created
Modified Jun 24, 2013
This snippet is Public
No tags for this snippet yet.
LicenseMIT_X11
SourceGithub

Adds color, git repository, and virtualenv information to command line prompt

Adds color, git repository, and virtualenv information to command line prompt: 
bash_prompt
post this code
Copy Embed Code
<iframe id="embedFrame" style="width:600px; height:300px;"
src="https://www.snip2code.com/Embed/9404/Adds-color--git-repository--and-virtuale?startLine=0"></iframe>
Click on the embed code to copy it into your clipboard Width Height
Leave empty to retrieve all the content Start End
#!/bin/bash # # DESCRIPTION: # # Set the bash prompt according to: # * the active virtualenv # * the branch/status of the current git repository # * the return value of the previous command # * the fact you just came from Windows and are used to having newlines in # your prompts. # # USAGE: # # 1. Save this file as ~/.bash_prompt # 2. Add the following line to the end of your ~/.bashrc or ~/.bash_profile: # . ~/.bash_prompt # # LINEAGE: # # Based on work by woods # # https://gist.github.com/31967 # The various escape codes that we can use to color our prompt. # @NOTE: I've mapped these codes out according to how ``Terminator`` displays them. # Other editors may be different. ROW_0="\[\033[0;" ROW_1="\[\033[1;" COLUMN_0="30m\]" COLUMN_1="31m\]" COLUMN_2="32m\]" COLUMN_3="33m\]" COLUMN_4="34m\]" COLUMN_5="35m\]" COLUMN_6="36m\]" COLUMN_7="37m\]" COLOR_NONE="\[\e[0m\]" # You may map the colors to a readable name if your color scheme is not based off of the standard palette. # This will make your code MUCH easier to read. If you change a color in your color scheme, # you can simply find/replace the name in this file. # # I used ``gpick`` to find my color names -- This color scheme is based off of ``Monokai``. # BLACK=${ROW_0}${COLUMN_0} # BLEACHED_CEDAR=${ROW_1}${COLUMN_0} # RED=${ROW_0}${COLUMN_1} # VIOLET=${ROW_1}${COLUMN_1} # LIME=${ROW_0}${COLUMN_2} # LIGHT_GREEN=${ROW_1}${COLUMN_2} # DARK_ORANGE=${ROW_0}${COLUMN_3} # PORTAFINO=${ROW_1}${COLUMN_3} # CORNFLOWER=${ROW_0}${COLUMN_4} # SKY_BLUE=${ROW_1}${COLUMN_4} # PURPLE=${ROW_0}${COLUMN_5} # DODGER_BLUE=${ROW_1}${COLUMN_5} # SEA_GREEN=${ROW_0}${COLUMN_6} # TURQUOISE=${ROW_1}${COLUMN_6} # DIM_GRAY=${ROW_0}${COLUMN_7} # GEYSER=${ROW_1}${COLUMN_7} # Standard color map GRAY=${ROW_0}${COLUMN_0} BOLD_GRAY=${ROW_1}${COLUMN_0} RED=${ROW_0}${COLUMN_1} BOLD_RED=${ROW_1}${COLUMN_1} GREEN=${ROW_0}${COLUMN_2} BOLD_GREEN=${ROW_1}${COLUMN_2} YELLOW=${ROW_0}${COLUMN_3} BOLD_YELLOW=${ROW_1}${COLUMN_3} BLUE=${ROW_0}${COLUMN_4} BOLD_BLUE=${ROW_1}${COLUMN_4} PURPLE=${ROW_0}${COLUMN_5} BOLD_PURPLE=${ROW_1}${COLUMN_5} CYAN=${ROW_0}${COLUMN_6} BOLD_CYAN=${ROW_1}${COLUMN_6} SILVER=${ROW_0}${COLUMN_7} BOLD_SILVER=${ROW_1}${COLUMN_7} # Detect whether the current directory is a git repository. function is_git_repository { git branch > /dev/null 2>&1 } # Determine the branch/state information for this git repository. function set_git_branch { # Capture the output of the "git status" command. git_status="$(git status 2> /dev/null)" # Set color based on clean/staged/dirty. if [[ ${git_status} =~ "working directory clean" ]]; then state="" elif [[ ${git_status} =~ "Changes to be committed" ]]; then state="+" else state="*" fi # Set arrow icon based on status against remote. remote_pattern="# Your branch is (.*) of" if [[ ${git_status} =~ ${remote_pattern} ]]; then if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then remote=" ↑" else remote=" ↓" fi else remote="" fi diverge_pattern="# Your branch and (.*) have diverged" if [[ ${git_status} =~ ${diverge_pattern} ]]; then remote=" ↕" fi # Get the name of the branch. branch_pattern="^# On branch ([^${IFS}]*)" if [[ ${git_status} =~ ${branch_pattern} ]]; then branch=${BASH_REMATCH[1]} fi # Set the final branch string. BRANCH="(${YELLOW}${branch}${state}${COLOR_NONE})${PURPLE}${remote}${COLOR_NONE}" } # Return the prompt symbol to use, colorized based on the return value of the # previous command. function set_prompt_symbol () { if test $1 -eq 0 ; then PROMPT_SYMBOL="\$" else PROMPT_SYMBOL="${BOLD_RED}\$${COLOR_NONE}" fi } # Determine active Python virtualenv details. function set_virtualenv () { if test -z "$VIRTUAL_ENV" ; then PYTHON_VIRTUALENV="" else PYTHON_VIRTUALENV="[${RED}`basename \"$VIRTUAL_ENV\"`${COLOR_NONE}] " fi } # Set the full bash prompt. function set_bash_prompt () { # Set the PROMPT_SYMBOL variable. We do this first so we don't lose the # return value of the last command. set_prompt_symbol $? # Set the PYTHON_VIRTUALENV variable. set_virtualenv # Set the BRANCH variable. if is_git_repository ; then set_git_branch else BRANCH='' fi # Set the bash prompt variable. PS1="\n${PYTHON_VIRTUALENV}${BOLD_BLUE}\u@\h${COLOR_NONE}:${BOLD_GREEN}\w${COLOR_NONE} ${BRANCH}${COLOR_NONE}\n${PROMPT_SYMBOL} " } # Tell bash to execute this function just before displaying its prompt. PROMPT_COMMAND=set_bash_prompt
If you want to be updated about similar snippets, Sign in and follow our Channels
Originally posted on https://gist.github.com/5853108