#!/bin/bash function bash_ps1 () { local LAST_EXIT_STATUS=$? local EXIT_STATUS="" local GIT_BRANCH="" local PYTHON_ENV="" local K8S_CURRENT_CONTEXT="" local DOTF="" local TODO="" local STATUS="" local COLOR_OFF='\033[0m' 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" local COLOR_PATH="\033[0;37m" local COLOR_EXIT_STATUS="[\033[1;37m\033[41m" local COLOR_KUBERNETES="\033[1;37m\033[44m" local COLOR_TODO="\033[1;30m\033[43m" local COLOR_DOTF="\033[1;37m\033[45m" local CURRENT_CONTEXT="" [[ $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 fi 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 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}]" 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}" PS1="${PS1}\n${COLOR_DIVIDER}└─\$${COLOR_OFF} " } export PROMPT_COMMAND=bash_ps1