#!/bin/bash

BASHRC="$HOME/.bashrc"
ZSHRC="$HOME/.zshrc"

MARKER_START="# === BEGIN SERVER CONFIG ==="
MARKER_END="# === END SERVER CONFIG ==="

# Читаем блок конфигурации без интерполяции переменных (благодаря кавычкам вокруг 'CONFIG_EOF')
read -r -d '' CONFIGS << 'CONFIG_EOF'
# aliases для стека директорий
alias pd='pushd'
alias po='popd'
alias pp='dirs -v'

# ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

alias c='clear'

ex () {
  if [ -f "$1" ] ; then
    case "$1" in
      *.tar.bz2)   tar xjf "$1"   ;;
      *.tar.gz)    tar xzf "$1"   ;;
      *.bz2)       bunzip2 "$1"   ;;
      *.rar)       unrar x "$1"   ;;
      *.gz)        gunzip "$1"    ;;
      *.tar)       tar xf "$1"    ;;
      *.tgz)       tar xzf "$1"   ;;
      *.zip)       unzip "$1"     ;;
      *.7z)        7z x "$1"      ;;
      *)           echo "'$1' невозможно извлечь через ex()" ;;
    esac
  else
    echo "'$1' не является валидным файлом"
  fi
}

mkd() {
  mkdir -p "$1" && cd "$1"
}
CONFIG_EOF

# Обновление .bashrc
if [[ -f "$BASHRC" ]]; then
    # Безопасное удаление старого блока конфигурации
    sed "/$MARKER_START/,/$MARKER_END/d" "$BASHRC" > "${BASHRC}.tmp" && mv "${BASHRC}.tmp" "$BASHRC"

    cat >> "$BASHRC" << EOF
$MARKER_START
$CONFIGS
CDPATH=..
$MARKER_END
EOF
    echo "Обновлен $BASHRC"
fi

# Обновление .zshrc
if [[ -f "$ZSHRC" ]]; then
    # Безопасное удаление старого блока конфигурации
    sed "/$MARKER_START/,/$MARKER_END/d" "$ZSHRC" > "${ZSHRC}.tmp" && mv "${ZSHRC}.tmp" "$ZSHRC"

    # Добавление новой конфигурации
    cat >> "$ZSHRC" << EOF
$MARKER_START
$CONFIGS
# Настройка Zsh
typeset -U path cdpath
setopt auto_cd auto_menu

# Автоматизация стека директорий
setopt auto_pushd
setopt pushd_ignore_dups
setopt pushd_minus

# Пути поиска директорий
cdpath=(..)

# Автозавершение
autoload -Uz compinit && compinit

# Настройки автозавершения
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*'

# Автоподсказки (если установлен плагин)
if [ -f /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then
  source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
fi
$MARKER_END
EOF
    echo "Обновлен $ZSHRC"
fi