# ---------- Цвета ----------
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
YELLOW="\[\033[1;33m\]"
BLUE="\[\033[1;34m\]"
PURPLE="\[\033[0;35m\]"
RESET="\[\033[0m\]"

# Не даём стандартному venv ломать наш PS1
export VIRTUAL_ENV_DISABLE_PROMPT=1

# ---------- Функция, которая вызывается перед показом приглашения ----------
set_bash_prompt() {
  local exit_code=$?

  # Символ приглашения: красный, если предыдущая команда упала
  local prompt_symbol="$"
  if [ "$exit_code" -ne 0 ]; then
    prompt_symbol="${RED}\$${RESET}"
  fi

  # ---- venv ----
  local venv_part=""
  if [ -n "$VIRTUAL_ENV" ]; then
    venv_part="${BLUE}($(basename "$VIRTUAL_ENV"))${RESET} "
  fi

  # ---- git branch ----
  local branch=""
  # Быстрее и проще, чем парсить `git branch` через sed
  branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
  local git_part=""
  if [ -n "$branch" ] && [ "$branch" != "HEAD" ]; then
    git_part=" ${PURPLE}($branch)${RESET}"
  fi

  # ---- Собираем двухстрочный PS1 ----
  # Пример:
  # (myenv) dmitry@wsl:/mnt/d/projects/myproj (main)
  # $
  PS1="\n${venv_part}${GREEN}\u@\h${RESET}:${YELLOW}\w${RESET}${git_part}\n${prompt_symbol} "
}

# Запускаем set_bash_prompt перед каждым показом приглашения
PROMPT_COMMAND=set_bash_prompt
