rich_shell() {
    case "$1" in
    on)
        __RICHRC__RICH_MODE=$1
        ;;
    *)
        unset __RICHRC__RICH_MODE
        ;;
    esac
    __richrc__git_info_env() {
        test -n "$RICHENV_SKIP_GIT" && return
        git_info_inner() {
            if type git >/dev/null; then
                GIT_BRANCH=$(git symbolic-ref --short HEAD)
                GIT_COMMIT_ID=$(git rev-parse --short HEAD)
                GIT_TAG=$(git describe --tags)
                GIT_STATUS=$(GIT_STATUS_RESULT=$(git status -s); test 0 -eq "$?" && (test -n "$GIT_STATUS_RESULT" && echo '×' || echo '√') )
            fi
        }
        git_info_inner 2>/dev/null
        unset -f git_info_inner
    }

    __richrc__docker_context_env() {
        test -n "$RICHENV_SKIP_DOCKER" && return
        DOCKER_BIN=$(command -v docker)
        docker_context_inner() {
            if test -n "${DOCKER_BIN}"; then
                DOCKER_CONTEXT=$("${DOCKER_BIN}" version -f '{{.Client.Version}}')
                if test -n "$("${DOCKER_BIN}" 2>&1 | grep context)" ; then
                    DOCKER_CONTEXT="$DOCKER_CONTEXT@$("${DOCKER_BIN}" context show)"
                fi
            fi
        }
        docker_context_inner 2>/dev/null
        unset -f docker_context_inner
    }

    __richrc__date_fmt() {
        date "+%Y-%m-%d-%H.%M.%S %a %Z"
    }

    __richrc__sys_info() {
        echo $(uname -s)-$(uname -m):$(uname -r)
    }

    __richrc__tty_info() {
        tty | sed -e "s:/dev/::"
    }

    ___RICH_PREFIX___='┌🖥️  '
    ___RICH_MIDDLE___='├📺'
    ___POOR_PREFIX___='└🕹️  '
    ___RICH_BRANCH_CHAR___=''
    ___RICH_RIGHT_ARROW___=''

    if test -n "$BASH_VERSION"; then
        __richrc__color_text() {
            printf "$1$2\e[0m"
        }

        __richrc__prompt() {
            __richrc__git_info_env
            __richrc__docker_context_env

            test -n "$DOCKER_CONTEXT" && printf "🐳($DOCKER_CONTEXT) "

            GIT_INFO=''
            test -n "$GIT_BRANCH" && GIT_INFO=$GIT_INFO$___RICH_BRANCH_CHAR___"$(__richrc__color_text "\e[31m" $GIT_BRANCH)"
            test -n "$GIT_COMMIT_ID" && GIT_INFO=$GIT_INFO"@$(__richrc__color_text "\e[32m" $GIT_COMMIT_ID)"
            test -n "$GIT_TAG" && GIT_INFO=$GIT_INFO":$(__richrc__color_text "\e[36m" $GIT_TAG)"
            test -n "$GIT_STATUS" && GIT_INFO=$GIT_INFO"$(__richrc__color_text "\e[33m" $GIT_STATUS)"

            test -n "$GIT_INFO" && printf "🐙($GIT_INFO) "

            unset DOCKER_CONTEXT GIT_BRANCH GIT_COMMIT_ID GIT_TAG GIT_STATUS GIT_INFO
            unset -f __richrc__prompt
        }

        __richrc__show_exit_code() {
            printf ${__LAST_CODE__:-0}
        }

        test $UID -eq 0 && __richrc__symbol='\[\e[31m\]#\[\e[0m\]' || __richrc__symbol='\[\e[1;4;33m\]$\[\e[0m\]'

        if [[ $- == *i* ]]; then bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'; fi
        ___richrc__update_ps1() {
            export __LAST_CODE__=$?
            history -a
            RICH_PS1=''
            test -n "$__RICHRC__RICH_MODE" && export RICH_PS1="\n$___RICH_PREFIX___\[\e[31m\]▒▓█\[\e[37;41m\]$(__richrc__sys_info)\[\e[31;40m\]█▓▒\[\e[0m\] \[\e[32m\]🕰️  [$(__richrc__date_fmt)]\[\e[0m\]\n$___RICH_MIDDLE___\[\e[1;33m\] <$(__richrc__tty_info)> \[\e[1;34m\]📂 $(ls -1 | wc -l | sed 's: ::g') files \[\e[1;33m\]$(ls -lah | grep -m 1 total | sed 's/total //')b\[\e[0m\] $(__richrc__prompt)\n$___POOR_PREFIX___"
            export PS1=$RICH_PS1'\[\e[40m\]\[\e[36m\](bash) \[\e[38;5;135m\]\u\[\e[30m\]@\[\e[40;38;5;166m\]\h \[\e[46;30;118m\]'$___RICH_RIGHT_ARROW___'\[\e[46;30;118m\]\w\[\e[0m\]\[\e[36;118m\]'$___RICH_RIGHT_ARROW___'\[\e[0m\] {\[\e[33m\]'$__LAST_CODE__'\[\e[0m\]}\n'$__richrc__symbol' '
        }
        export PROMPT_COMMAND='___richrc__update_ps1' RPROMPT=''
    elif test -n "$ZSH_VERSION"; then
        HISTFILE=${HISTFILE:-$HOME/.zsh_history}
        HISTSIZE=50000
        SAVEHIST=50000
        setopt INC_APPEND_HISTORY
        setopt EXTENDED_HISTORY

        __richrc__color_text() {
            echo $1$2'%f'
        }

        __richrc__prompt() {
            __richrc__git_info_env
            __richrc__docker_context_env

            test -n "$DOCKER_CONTEXT" && echo -n "🐳($DOCKER_CONTEXT) "

            GIT_INFO=''
            test -n "$GIT_BRANCH" && GIT_INFO=$GIT_INFO$___RICH_BRANCH_CHAR___"$(__richrc__color_text '%F{1}' $GIT_BRANCH)"
            test -n "$GIT_COMMIT_ID" && GIT_INFO=$GIT_INFO"@$(__richrc__color_text '%F{2}' $GIT_COMMIT_ID)"
            test -n "$GIT_TAG" && GIT_INFO=$GIT_INFO":$(__richrc__color_text '%F{14}' $GIT_TAG)"
            test -n "$GIT_STATUS" && GIT_INFO=$GIT_INFO"$(__richrc__color_text '%F{3}' $GIT_STATUS)"

            test -n "$GIT_INFO" && echo -n "🐙($GIT_INFO) "

            unset DOCKER_CONTEXT GIT_BRANCH GIT_COMMIT_ID GIT_TAG GIT_STATUS GIT_INFO
            unset -f __richrc__prompt
        }

        test $UID -eq 0 && __richrc__symbol='%F{1}#%f' || __richrc__symbol='%F{3}$%f'

        autoload -Uz history-search-end
        zle -N history-beginning-search-backward-end \
                history-search-end
        zle -N history-beginning-search-forward-end \
                        history-search-end
        bindkey "\e[5~" history-beginning-search-backward-end
        bindkey "\e[6~" history-beginning-search-forward-end
        bindkey "^[[A" history-beginning-search-backward
        bindkey "^[[B" history-beginning-search-forward

        setopt PROMPT_SUBST
        __richrc__precmd() { fc -W }
        precmd_functions+=(__richrc__precmd)
        RICH_PS1=''
        test -n "$__RICHRC__RICH_MODE" && export RICH_PS1=$___RICH_PREFIX___$'%F{red}▒▓█%F{white}%K{red}$(__richrc__sys_info)%k%F{red}█▓▒ %F{green}🕰️  [$(__richrc__date_fmt)]%f \n'$___RICH_MIDDLE___$'%F{11} <$(__richrc__tty_info)> %F{69}📂$(ls -1 | wc -l | sed "s: ::g") files %F{3}$(ls -lah | grep -m 1 total | sed "s/total //")b %f$(__richrc__prompt)\n'$___POOR_PREFIX___
        export PS1=$RICH_PS1$'%K{0}%F{cyan}(zsh) %F{135}%n%f@%F{166}%m%f %K{14}%F{0}'$___RICH_RIGHT_ARROW___$'%K{14}%F{0}%~%k%F{14}'$___RICH_RIGHT_ARROW___$'%k %f{%F{3}%?%f}\n%F{3}%U'$__richrc__symbol$'%u '
    fi
}

rich() {
    rich_shell on
}

poor() {
    rich_shell off
}

test -n "$NEW_YEAR_I_LL_RICH" && rich || poor
