# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_05_03

# NOTE: `PS0` and `PROMPT_COMMAND` are not POSIX but supported by common
# shells.

__prompt_ps1()
{
  __prompt_exit="$?"
  __prompt_time="$(__prompt_time_stop)"
  __prompt_jobs="$(jobs > '/dev/null'; jobs | wc -l)"
  __prompt_color     '\x01%s\x02'
  __prompt_user_host '%s:'
  __prompt_pwd       '%s'
  __prompt_chroot    ' (chroot:%s)'
  __prompt_ranger    ' (ranger:%s)'
  __prompt_venv      ' (venv:%s)'
  __prompt_git       ' (git:%s)'
  __prompt_jobs      ' {%s}' "$__prompt_jobs"
  __prompt_time      ' [%s]' "$__prompt_time"
  __prompt_exit      ' <%s>' 'TSTP' "$__prompt_exit"
  __prompt_end       ' ' '$' '#'
  __prompt_statusline '\x01%s\x02' "$(
    __prompt_shell     '%s:' 'sh'
    __prompt_user_host '%s:'
    __prompt_pwd       '%s'
  )"
  __prompt_intr '^]'
}

__prompt_ps0()
{
  __prompt_intr '^C'
  __prompt_statusline '%s' "$(
    __prompt_shell     '%s:' 'sh'
    __prompt_user_host '%s:'
    __prompt_pwd       '%s'
    __prompt_run       ':%s'
  )"
  __prompt_reset '%s'
  __prompt_time_start
}

__prompt_command()
{
  __prompt_venv_activate
}

PS1='$(__prompt_ps1)'
PS0='$(__prompt_ps0)'
PROMPT_COMMAND='__prompt_command'