# shellcheck shell=bash
# shellcheck disable=SC2034 # Expected behavior for themes.
#
# One line prompt showing the following configurable information
# for git:
# time (virtual_env) username@hostname pwd git_char|git_branch git_dirty_status|→
#
# The → arrow shows the exit status of the last command:
# - bold green: 0 exit status
# - bold red: non-zero exit status
#
# Example outside git repo:
# 07:45:05 user@host ~ →
#
# Example inside clean git repo:
# 07:45:05 user@host .bash_it ±|master|→
#
# Example inside dirty git repo:
# 07:45:05 user@host .bash_it ±|master ✗|→
#
# Example with virtual environment:
# 07:45:05 (venv) user@host ~ →
#

SCM_NONE_CHAR=''
SCM_THEME_PROMPT_DIRTY=" ${red?}✗"
SCM_THEME_PROMPT_CLEAN=""
SCM_THEME_PROMPT_PREFIX="${green?}|"
SCM_THEME_PROMPT_SUFFIX="${green?}|"
SCM_GIT_SHOW_MINIMAL_INFO=true

CLOCK_THEME_PROMPT_PREFIX=''
CLOCK_THEME_PROMPT_SUFFIX=' '
THEME_SHOW_CLOCK=false
THEME_CLOCK_COLOR=${THEME_CLOCK_COLOR:-"${bold_blue?}"}
THEME_CLOCK_FORMAT=${THEME_CLOCK_FORMAT:-"%I:%M:%S"}

THEME_SHOW_USER_HOST=true
USER_HOST_THEME_PROMPT_PREFIX="${bold_black?}"
USER_HOST_THEME_PROMPT_SUFFIX=" "

VIRTUALENV_THEME_PROMPT_PREFIX='('
VIRTUALENV_THEME_PROMPT_SUFFIX=') '

function prompt_command() {
	# This needs to be first to save last command return code
	local RC="$?"

	hostname="${bold_black?}\u@\h"
	virtualenv="${white?}$(virtualenv_prompt)"

	# Set return status color
	if [[ ${RC} == 0 ]]; then
		ret_status="${bold_green?}"
	else
		ret_status="${bold_red?}"
	fi

	# Append new history lines to history file
	history -a

	PS1="$(clock_prompt)${virtualenv}$(user_host_prompt)${bold_cyan?}\W $(scm_prompt_char_info)${ret_status}→ ${normal?}"
}

safe_append_prompt_command prompt_command
