-
Notifications
You must be signed in to change notification settings - Fork 0
/
bash_prompt
130 lines (107 loc) · 3.31 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
#!/usr/bin/env bash
# @gf3’s Sexy Bash Prompt, inspired by “Extravagant Zsh Prompt”
# Shamelessly copied from https://github.com/gf3/dotfiles
# Screenshot: http://i.imgur.com/s0Blh.png
if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
export TERM=gnome-256color
elif infocmp xterm-256color >/dev/null 2>&1; then
export TERM=xterm-256color
fi
if tput setaf 1 &> /dev/null; then
tput sgr0
if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then
# Changed these colors to fit Solarized theme
MAGENTA=$(tput setaf 125)
ORANGE=$(tput setaf 166)
GREEN=$(tput setaf 64)
PURPLE=$(tput setaf 61)
WHITE=$(tput setaf 244)
else
MAGENTA=$(tput setaf 5)
ORANGE=$(tput setaf 4)
GREEN=$(tput setaf 2)
PURPLE=$(tput setaf 1)
WHITE=$(tput setaf 7)
fi
BOLD=$(tput bold)
RESET=$(tput sgr0)
else
MAGENTA="\033[1;31m"
ORANGE="\033[1;33m"
GREEN="\033[1;32m"
CYAN="\033[1;36m"
PURPLE="\033[1;35m"
WHITE="\033[1;37m"
BOLD=""
RESET="\033[m"
fi
export BRIGHT_GREEN="\033[01;32m"
export BRIGHT_YELLOW="\033[01;33m"
export BRIGHT_RED="\033[01;31m"
export BRIGHT_BLACK="\033[01;30m"
export BRIGHT_CYAN="\033[01;36m"
export MAGENTA
export ORANGE
export GREEN
export CYAN
export PURPLE
export WHITE
export BOLD
export RESET
export HIGH_INTENSITY_PURPLE="\033[0;95m"
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
##################################
# PS1 – Default interaction prompt
# \u => Username
# \h => Hostname
# \w => Full pathname of current directory
# \$? => Exit status of previously run command
# Add command to PROMPT_COMMAND (runs before each command)
# Makes sure ithe command is not already in PROMPT_COMMAND
append_to_prompt_command() {
if [[ ":$PROMPT_COMMAND:" != *":$1:"* ]]; then
PROMPT_COMMAND="${PROMPT_COMMAND:+"$PROMPT_COMMAND:"}$1"
fi
}
subtract_one() {
echo "$(expr $1 - 1)"
}
# Set iTerm title to show current directory
if [ $ITERM_SESSION_ID ]; then
append_to_prompt_command 'echo -ne "\033]0;${PWD##*/}\007"'
fi
function set_prompt() {
# Capture exit code of last command
local ex=$?
local reset="$reset"
local color;
local cur_cmd="\#"
###############
## cool symbols
###############
# symbol_yhat_lower="\u0177"
# symbol_yhat_upper="\u0176"
symbol_american_flag=$(echo -e "🇺🇸")
# symbol_lightning_bolt="⚡ "
###############
###############
local symbol="$symbol_american_flag"
# set color to red if prior cmd exited non-zero
if [[ "$ex" -ne 0 ]]; then
color="$BRIGHT_RED";
else
color="$BRIGHT_GREEN";
fi
# Set prompt content.
local ps1="$symbol \[${reset}${ORANGE}\]${USER} $symbol \[$WHITE\]on \[$BRIGHT_CYAN\]${HOSTNAME} \[$WHITE\]in \[$BRIGHT_GREEN\]\w\[$WHITE\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" \")\[$BRIGHT_YELLOW\]\$(parse_git_branch)\[$WHITE\]\n\$ \[$WHITE\]\[$reset\] "
# Preprend with colourized return status code from prior command
# PS1="${BOLD}${color}[${ex}]$reset $ps1 $reset"
PS1="${BOLD}${color}[${cur_cmd}]$reset $ps1 $reset"
PS2="\[$ORANGE\]→ \[$reset\]"
}
export PROMPT_COMMAND=set_prompt