2021-11-11 15:27:24 +00:00
|
|
|
#!/bin/bash
|
|
|
|
function set_bash_prompt () {
|
|
|
|
local LAST_EXIT_STATUS=$?
|
|
|
|
local EXIT_STATUS=""
|
2021-11-12 10:36:09 +00:00
|
|
|
local GIT_BRANCH=""
|
|
|
|
local PYTHON_ENV=""
|
|
|
|
local K8S_CURRENT_CONTEXT=""
|
2021-11-12 11:21:38 +00:00
|
|
|
local DOTF=""
|
2021-11-12 11:47:28 +00:00
|
|
|
local TODO=""
|
2021-11-12 11:21:38 +00:00
|
|
|
local STATUS=""
|
2021-11-11 15:27:24 +00:00
|
|
|
|
2021-11-12 10:36:09 +00:00
|
|
|
local COLOR_OFF='\033[0m'
|
2021-11-11 15:27:24 +00:00
|
|
|
local COLOR_DIVIDER="\033[0;32m"
|
|
|
|
local COLOR_USERNAME="\[\e[34;1m\]"
|
|
|
|
local COLOR_USERHOSTAT="\[\e[34;1m\]"
|
|
|
|
local COLOR_HOSTNAME="\[\e[34;1m\]"
|
|
|
|
local COLOR_GITBRANCH="\[\e[33;1m\]"
|
|
|
|
local COLOR_VENV="\033[0;36m"
|
2021-11-12 10:36:09 +00:00
|
|
|
local COLOR_PATH="\033[0;37m"
|
|
|
|
local COLOR_EXIT_STATUS="[\033[1;37m\033[41m"
|
|
|
|
local COLOR_KUBERNETES="\033[1;37m\033[44m"
|
2021-11-12 11:21:38 +00:00
|
|
|
local COLOR_TODO="'\033[1;30m''\033[43m'"
|
2021-11-12 11:47:28 +00:00
|
|
|
local COLOR_DOTF="\033[1;37m\033[45m"
|
2021-11-11 15:27:24 +00:00
|
|
|
|
2021-11-12 10:36:09 +00:00
|
|
|
local CURRENT_CONTEXT=""
|
2021-11-11 15:27:24 +00:00
|
|
|
|
2021-11-12 10:36:09 +00:00
|
|
|
[[ $LAST_EXIT_STATUS != 0 ]] && EXIT_STATUS="${COLOR_DIVIDER}${COLOR_EXIT_STATUS}${LAST_EXIT_STATUS}${COLOR_DIVIDER}]"
|
|
|
|
[[ $(type -t __git_ps1) == function ]] && GIT_BRANCH="${COLOR_GITBRANCH}$(__git_ps1)${COLOR_DIVIDER}"
|
|
|
|
[[ -n "$VIRTUAL_ENV" ]] && PYTHON_ENV="${COLOR_DIVIDER}(${COLOR_VENV}${VIRTUAL_ENV##*/}${COLOR_DIVIDER})"
|
|
|
|
if [[ $(type kubectl) ]]; then
|
|
|
|
CURRENT_CONTEXT="$(kubectl config current-context)"
|
|
|
|
if [[ "$CURRENT_CONTEXT" != "default" ]];then
|
|
|
|
K8S_CURRENT_CONTEXT="${COLOR_DIVIDER}[${COLOR_KUBERNETES}${CURRENT_CONTEXT}${COLOR_DIVIDER}]"
|
|
|
|
fi
|
2021-11-11 15:27:24 +00:00
|
|
|
fi
|
2021-11-12 10:36:09 +00:00
|
|
|
|
2021-11-12 11:21:38 +00:00
|
|
|
if [[ $(type -t dotfiles_status) == function ]];then
|
|
|
|
if [[ $(dotfiles_status check_error) == YES ]];then
|
|
|
|
DOTF="${COLOR_DOTF}E"
|
|
|
|
elif [[ $(dotfiles_status check_status) ]];then
|
|
|
|
DOTF="${COLOR_DOTF}."
|
|
|
|
elif [[ $(dotfiles_status check_push) ]];then
|
|
|
|
DOTF="${COLOR_DOTF}p"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2021-11-12 11:47:28 +00:00
|
|
|
if [[ $(type -t todo_status) == function ]] && [[ "$(todo_status)" == "YES" ]];then
|
|
|
|
TODO="${COLOR_TODO}T"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -n $DOTF ]] || [[ -n $TODO ]];then
|
|
|
|
STATUS="${COLOR_DIVIDER}[${DOTF}${TODO}${COLOR_DIVIDER}]"
|
2021-11-12 11:21:38 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
PS1="\n${COLOR_DIVIDER}┌──(${COLOR_USERNAME}\u${COLOR_USERHOSTAT}@${COLOR_HOSTNAME}\h${COLOR_DIVIDER})─[${COLOR_PATH}\w${COLOR_DIVIDER}]${EXIT_STATUS}${STATUS}${PYTHON_ENV}${K8S_CURRENT_CONTEXT}${GIT_BRANCH}"
|
2021-11-12 10:36:09 +00:00
|
|
|
PS1="${PS1}\n${COLOR_DIVIDER}└─\$${COLOR_OFF} "
|
2021-11-11 15:27:24 +00:00
|
|
|
}
|
|
|
|
|
2021-11-12 10:36:09 +00:00
|
|
|
|
2021-11-11 15:27:24 +00:00
|
|
|
export PROMPT_COMMAND=set_bash_prompt
|