Created
May 11, 2014 12:12
-
-
Save ildus/c9dd3f91d7d1014cd63f to your computer and use it in GitHub Desktop.
.bash_profile, works in OSX 10.9.2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export WORKON_HOME=~/.envs | |
source /usr/local/bin/virtualenvwrapper.sh | |
export CFLAGS=-Qunused-arguments | |
export CPPFLAGS=-Qunused-arguments | |
export GOPATH=$HOME/dev/golang | |
export PATH=$PATH:$GOPATH/bin | |
source /usr/local/git/contrib/completion/git-completion.bash | |
source /usr/local/git/contrib/completion/git-prompt.sh | |
# add local bin path | |
PATH=$HOME/bin:$PATH | |
PS1_OLD=$PS1 | |
# setup color variables | |
color_is_on= | |
color_red= | |
color_green= | |
color_yellow= | |
color_blue= | |
color_white= | |
color_gray= | |
color_bg_red= | |
color_off= | |
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then | |
color_is_on=true | |
color_red="\[$(/usr/bin/tput setaf 1)\]" | |
color_green="\[$(/usr/bin/tput setaf 2)\]" | |
color_yellow="\[$(/usr/bin/tput setaf 3)\]" | |
color_blue="\[$(/usr/bin/tput setaf 6)\]" | |
color_white="\[$(/usr/bin/tput setaf 7)\]" | |
color_gray="\[$(/usr/bin/tput setaf 8)\]" | |
color_off="\[$(/usr/bin/tput sgr0)\]" | |
color_error="$(/usr/bin/tput setab 1)$(/usr/bin/tput setaf 7)" | |
color_error_off="$(/usr/bin/tput sgr0)" | |
fi | |
function parse_git_status { | |
# clear git variables | |
GIT_BRANCH= | |
GIT_DIRTY= | |
# exit if no git found in system | |
local GIT_BIN=$(which git 2>/dev/null) | |
[[ -z $GIT_BIN ]] && return | |
GIT_BRANCH=$(__git_ps1 "%s") | |
# get git status | |
local GIT_STATUS=$($GIT_BIN status --porcelain 2>/dev/null) | |
[[ -n $GIT_STATUS ]] && GIT_DIRTY=1 | |
} | |
function prompt_command { | |
# parse git status and get git variables | |
parse_git_status | |
local PS1_GIT= | |
local PS1_VENV= | |
local PWDNAME="${PWD}" | |
# beautify working firectory name | |
if [ "${HOME}" == "$PWD" ]; then | |
PWDNAME="~" | |
elif [ "${HOME}" == "${PWD:0:${#HOME}}" ]; then | |
PWDNAME="~${PWD:${#HOME}}" | |
fi | |
# build b/w prompt for git and vertial env | |
[[ ! -z $GIT_BRANCH ]] && PS1_GIT=" (git: ${GIT_BRANCH})" | |
[[ ! -z $VIRTUAL_ENV ]] && PS1_VENV=" (venv: ${VIRTUAL_ENV#$WORKON_HOME})" | |
# calculate fillsize | |
#local fillsize=$(($COLUMNS-$(printf "${USER}@${HOSTNAME}:${PWDNAME}${PS1_GIT}${PS1_VENV} " | wc -c | tr -d " "))) | |
# local FILL=$color_gray | |
# while [ $fillsize -gt 0 ]; do FILL="${FILL}─"; fillsize=$(($fillsize-1)); done | |
# FILL="${FILL}${color_off}" | |
local color_user= | |
if $color_is_on; then | |
# set user color | |
case `id -u` in | |
0) color_user=$color_red ;; | |
*) color_user=$color_green ;; | |
esac | |
# build git status for prompt | |
if [ ! -z $GIT_BRANCH ]; then | |
if [ -z $GIT_DIRTY ]; then | |
PS1_GIT=" (git: ${color_green}${GIT_BRANCH}${color_off})" | |
else | |
PS1_GIT=" (git: ${color_red}${GIT_BRANCH}${color_off})" | |
fi | |
fi | |
# build python venv status for prompt | |
[[ ! -z $VIRTUAL_ENV ]] && PS1_VENV=" (venv: ${color_blue}${VIRTUAL_ENV#$WORKON_HOME}${color_off})" | |
fi | |
# set new color prompt | |
PS1="${color_user}${USER}${color_off}@${color_yellow}${HOSTNAME}${color_off}:${color_white}${PWDNAME}${color_off}${PS1_GIT}${PS1_VENV} ${FILL}\n➜ " | |
# get cursor position and add new line if we're not in first column | |
# cool'n'dirty trick (http://stackoverflow.com/a/2575525/1164595) | |
# XXX FIXME: this hack broke ssh =( | |
# exec < /dev/tty | |
# local OLDSTTY=$(stty -g) | |
# stty raw -echo min 0 | |
# echo -en "\033[6n" > /dev/tty && read -sdR CURPOS | |
# stty $OLDSTTY | |
#echo -en "\033[6n" && read -sdR CURPOS | |
#[[ ${CURPOS##*;} -gt 1 ]] && echo "${color_error}↵${color_error_off}" | |
# set title | |
if [ ! -z $VIRTUAL_ENV ]; then | |
echo -ne "\033]0;[env:${VIRTUAL_ENV#$WORKON_HOME}]"; echo -ne "\007" | |
else | |
echo -ne "\033]0;${PWDNAME}"; echo -ne "\007" | |
fi | |
} | |
PS1=$PS1"\n➜ " | |
PROMPT_COMMAND=prompt_command |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment