blob: ada23dcc804a36ef6fe08aacae0fc7ea01488ed1 [file] [log] [blame]
Eduardo Bellido Bellido96b370a2013-11-13 22:45:05 +01001#!/usr/bin/env bash
2
3SHELL_SSH_CHAR="⌁ "
4SHELL_THEME_PROMPT_COLOR=32
5SHELL_SSH_THEME_PROMPT_COLOR=208
6
7VIRTUALENV_CHAR="ⓔ "
8VIRTUALENV_THEME_PROMPT_COLOR=35
9
10SCM_NONE_CHAR=""
11SCM_GIT_CHAR="⎇ "
12SCM_GIT_BEHIND_CHAR="↓"
13SCM_GIT_AHEAD_CHAR="↑"
14SCM_THEME_PROMPT_CLEAN=""
15SCM_THEME_PROMPT_DIRTY=""
16SCM_THEME_PROMPT_COLOR=238
17SCM_THEME_PROMPT_CLEAN_COLOR=267
18SCM_THEME_PROMPT_DIRTY_COLOR=220
19
20CWD_THEME_PROMPT_COLOR=240
21
22LAST_STATUS_THEME_PROMPT_COLOR=52
23
24function set_rgb_color {
25 if [[ "${1}" != "-" ]]; then
26 fg="38;5;${1}"
27 fi
28 if [[ "${2}" != "-" ]]; then
29 bg="48;5;${2}"
30 [[ -n "${fg}" ]] && bg=";${bg}"
31 fi
32 echo -e "\[\033[${fg}${bg}m\]"
33}
34
35function powerline_shell_prompt {
36 if [[ -n "${SSH_CLIENT}" ]]; then
37 SHELL_PROMPT="${bold_white}$(set_rgb_color - ${SHELL_SSH_THEME_PROMPT_COLOR}) ${SHELL_SSH_CHAR}\u@\h ${normal}"
38 else
39 SHELL_PROMPT="${bold_white}$(set_rgb_color - ${SHELL_THEME_PROMPT_COLOR}) \u ${normal}"
40 fi
41}
42
43function powerline_virtualenv_prompt {
44 if [[ -n "$VIRTUAL_ENV" ]]; then
45 virtualenv=$(basename "$VIRTUAL_ENV")
46 VIRTUALENV_PROMPT="$(set_rgb_color - ${VIRTUALENV_THEME_PROMPT_COLOR}) ${VIRTUALENV_CHAR}$virtualenv ${normal}"
47 else
48 VIRTUALENV_PROMPT=""
49 fi
50}
51
52function powerline_scm_prompt {
53 scm_prompt_vars
54
55 if [[ "${SCM_NONE_CHAR}" != "${SCM_CHAR}" ]]; then
56 if [[ "${SCM_DIRTY}" -eq 1 ]]; then
57 SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_DIRTY_COLOR} ${SCM_THEME_PROMPT_COLOR})"
58 else
59 SCM_PROMPT="$(set_rgb_color ${SCM_THEME_PROMPT_CLEAN_COLOR} ${SCM_THEME_PROMPT_COLOR})"
60 fi
61 [[ "${SCM_GIT_CHAR}" == "${SCM_CHAR}" ]] && SCM_PROMPT+=" ${SCM_CHAR}${SCM_BRANCH}${SCM_STATE}${SCM_GIT_BEHIND}${SCM_GIT_AHEAD}${SCM_GIT_STASH}"
62 SCM_PROMPT="${SCM_PROMPT} ${normal}"
63 else
64 SCM_PROMPT=""
65 fi
66}
67
68function powerline_cwd_prompt {
69 CWD_PROMPT="${THEME_PROMPT_SEPARATOR}${normal}$(set_rgb_color - ${CWD_THEME_PROMPT_COLOR}) \w ${normal}$(set_rgb_color ${CWD_THEME_PROMPT_COLOR} -)${normal}"
70}
71
72function powerline_last_status_prompt {
73 if [[ "$1" -eq 0 ]]; then
74 LAST_STATUS_PROMPT=""
75 else
76 LAST_STATUS_PROMPT="$(set_rgb_color - ${LAST_STATUS_THEME_PROMPT_COLOR}) ${LAST_STATUS} ${normal}$(set_rgb_color ${LAST_STATUS_THEME_PROMPT_COLOR} -)${THEME_PROMPT_SEPARATOR}${normal}"
77 fi
78}
79
80function powerline_prompt_command() {
81 local LAST_STATUS="$?"
82
83 powerline_shell_prompt
84 powerline_virtualenv_prompt
85 powerline_scm_prompt
86 powerline_cwd_prompt
87 powerline_last_status_prompt LAST_STATUS
88
89 PS1="${SHELL_PROMPT}${VIRTUALENV_PROMPT}${SCM_PROMPT}${CWD_PROMPT}${LAST_STATUS_PROMPT} "
90}
91
92PROMPT_COMMAND=powerline_prompt_command
93