-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.bash_prompt
136 lines (117 loc) · 3.79 KB
/
.bash_prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# credit to :
# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt
# http://brettterpstra.com/2009/11/17/my-new-favorite-bash-prompt/
# Color ref: http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
# More tips: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
prompt_git() {
local s=""
local branchName=""
# check if the current directory is in a git repository
if [ $(git rev-parse --is-inside-work-tree &>/dev/null; printf "%s" $?) == 0 ]; then
# check if the current directory is in .git before running git checks
#if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == "false" ]; then
# # ensure index is up to date
# git update-index --really-refresh -q &>/dev/null
# # check for uncommitted changes in the index
# if ! $(git diff --quiet --ignore-submodules --cached); then
# s="$s+";
# fi
# # check for unstaged changes
# if ! $(git diff-files --quiet --ignore-submodules --); then
# s="$s!";
# fi
# # check for untracked files
# if [ -n "$(git ls-files --others --exclude-standard)" ]; then
# s="$s?";
# fi
# # check for stashed files
# if $(git rev-parse --verify refs/stash &>/dev/null); then
# s="$s$";
# fi
#fi
# get the short symbolic ref
# if HEAD isn't a symbolic ref, get the short SHA
# otherwise, just give up
branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
git rev-parse --short HEAD 2> /dev/null || \
printf "(unknown)")"
[ -n "$s" ] && s=" [$s]"
printf "%s" "$1$branchName$s"
else
return
fi
}
set_prompts() {
local black=""
local blue=""
local bold=""
local cyan=""
local green=""
local orange=""
local purple=""
local red=""
local reset=""
local white=""
local yellow=""
local hostStyle=""
local userStyle=""
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
tput sgr0 # reset colors
bold=$(tput bold)
reset=$(tput sgr0)
# Solarized colors
# (https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized#the-values)
black=$(tput setaf 0)
blue=$(tput setaf 33)
cyan=$(tput setaf 37)
green=$(tput setaf 64)
orange=$(tput setaf 166)
purple=$(tput setaf 125)
red=$(tput setaf 124)
white=$(tput setaf 15)
yellow=$(tput setaf 136)
else
bold=""
reset="\e[0m"
black="\e[1;30m"
blue="\e[1;34m"
cyan="\e[1;36m"
green="\e[1;32m"
orange="\e[1;33m"
purple="\e[1;35m"
red="\e[1;31m"
white="\e[1;37m"
yellow="\e[1;33m"
fi
# build the prompt
# logged in as root
if [[ "$USER" == "root" ]]; then
userStyle="\[$bold$red\]"
else
userStyle="\[$orange\]"
fi
# connected via ssh
if [[ "$SSH_TTY" ]]; then
hostStyle="\[$bold$red\]"
else
hostStyle="\[$yellow\]"
fi
# add detail to prompt
PS1="\n" # newline
PS1+="\[$userStyle\]\u" # username
PS1+="\[$reset$white\]@"
PS1+="\[$hostStyle\]\h" # host
PS1+="\[$reset$white\]:"
PS1+="\[$green\]\w" # working directory
PS1+="\$(prompt_git \"$white on $cyan\") " # git repository details
PS1+="\[$purple\]\D{%F %T}"
PS1+="\n"
PS1+="\[$reset$white\]\$ \[$reset\]" # $ (and reset color)
export PS1;
}
set_prompts
unset set_prompts
# mac iterm tab name change
if [ $ITERM_SESSION_ID ]; then
export PROMPT_COMMAND='echo -ne "\033]0; ${PWD}\007"';
fi