# ==============================================================================
# 1. БАЗОВЫЕ НАСТРОЙКИ SHELL
# ==============================================================================

# Прерываем выполнение, если shell не интерактивный (например, скрипты)
case $- in
    *i*) ;;
      *) return;;
esac

# Настройки истории команд
HISTCONTROL=ignoreboth          # Игнорировать дубликаты и команды с пробелом в начале
shopt -s histappend             # Дописывать историю, а не перезаписывать файл
HISTSIZE=10000                  # Увеличиваем размер истории в памяти
HISTFILESIZE=20000              # Увеличиваем размер истории в файле
HISTTIMEFORMAT="%F %T "         # (Опционально) Добавляет дату и время к командам в history

# Обновлять переменные LINES и COLUMNS после каждой команды (полезно при ресайзе окон)
shopt -s checkwinsize

# ==============================================================================
# 2. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ И ПУТИ (PATH)
# ==============================================================================

# Собираем PATH в одном месте
export PATH="/snap/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH"       # Для uv и других локальных бинарников
export PATH="$HOME/.npm-global/bin:$PATH"  # Для глобальных npm пакетов

# ==============================================================================
# 3. АЛИАСЫ И УТИЛИТЫ
# ==============================================================================

# Включаем цвета для стандартных утилит
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# Навигация
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# ==============================================================================
# 4. ФУНКЦИИ И ИЗОЛЯЦИЯ
# ==============================================================================

# Изолируем Git от глобальных прокси
git() {
    http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= ALL_PROXY= all_proxy= command git "$@"
}

# ==============================================================================
# 5. ПОДКЛЮЧЕНИЕ ВНЕШНИХ МОДУЛЕЙ И СЕКРЕТОВ
# ==============================================================================

# Автодополнение (Bash Autocompletion)
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# NVM (Node Version Manager)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# Пользовательские конфиги (идут в Stow)
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.bash_functions ] && source ~/.bash_functions
[ -f ~/.bash_prompt ] && source ~/.bash_prompt

# ЛОКАЛЬНЫЕ СЕКРЕТЫ (НЕ ДОБАВЛЯТЬ В GIT/STOW!)
[ -f ~/.env.secrets ] && source ~/.env.secrets
