#!/bin/bash

# Инициализация переменных
userName="${SUDO_USER:-${USER}}" # Пользователь
userHomeDir="/home/${userName}"
setupDir=$(pwd)
installationDir="${userHomeDir}/nad-setup-data"
autostartScriptsDir="${installationDir}/autostart"

# Проверка окружения
checkEnvironment() {
  if [ -z "$userName" ] || [ "$userName" = 'root' ]; then
    echo "Ошибка: Пользователь root или пустое имя пользователя"
    exit 1
  fi
}

# Создание рабочей директории
createDirectory() {
  mkdir -v "$installationDir"
  sudo chown "$userName" "$installationDir"
  sudo chmod 777 "$installationDir"
}

# Отключение системных оповещений об ошибках
disableErrorPrompts() {
  local filePath="/etc/default/apport"
  local setStr="enabled=0"
  sudo sed -i "s/enabled=1/${setStr}/" "$filePath"
  echo "Отключены системные оповещения"
}

# Отключение пароля для sudo
disableSudoPassword() {
  local filePath="/etc/sudoers"
  local setStr="ALL=(ALL:ALL) NOPASSWD: ALL"
  sudo sed -i "s/ALL=(ALL:ALL) ALL/${setStr}/g" "$filePath"
  echo "Отключены запросы пароля для sudo"
}

# Автозапуск скриптов через systemd
setupAutostart() {
  local configsOutputDir="${userHomeDir}/.config/autostart"
  local filesInputDir="${setupDir}/autostart"

  mkdir -pv "$configsOutputDir"
  mkdir -pv "$autostartScriptsDir"
  sudo chown -R "$userName" "$autostartScriptsDir"
  sudo chmod -R 777 "$autostartScriptsDir"

  if [ -d "$configsOutputDir" ] && [ -d "$autostartScriptsDir" ]; then
    # Автозапуск различных скриптов
    setStartup "run.sh"
    setStartup "rotate-touch-matrix.sh"
    setStartup "hide-panel.sh"
    #setStartup "lock.sh"
    setStartup "sleep_kill.sh"
  else
    echo "Ошибка: Не удалось создать необходимые директории для автозапуска."
  fi
}

# Функция для добавления скрипта в автозапуск
setStartup() {
  local fileName="$1"
  local configInputFile="${filesInputDir}/${fileName}.desktop"
  local configOutputFile="${configsOutputDir}/${fileName}.desktop"
  local scriptInputFile="${filesInputDir}/${fileName}"
  local scriptOutputFile="${autostartScriptsDir}/${fileName}"

  if [ -f "$configInputFile" ] && [ -f "$scriptInputFile" ]; then
    sudo cp -v "$configInputFile" "$configOutputFile"
    sudo cp -v "$scriptInputFile" "$scriptOutputFile"
    sudo chown "$userName" "$configOutputFile"
    sudo chmod 777 "$configOutputFile"
    sudo sed -i "s|Exec=|Exec=${scriptOutputFile}|" "$configOutputFile"
    sudo chown "$userName" "$scriptOutputFile"
    sudo chmod 777 "$scriptOutputFile"
    echo "Автозапуск настроен для: ${fileName}"
  else
    echo "Ошибка: Не удалось настроить автозапуск для ${fileName}"
  fi
}

# Ожидание подтверждения для продолжения
awaitConfirmForProceed() {
  echo "$1"
  read -pr "Продолжить? (Y/n): "
  case $(echo "$REPLY" | tr '[:upper:]' '[:lower]') in
    y | yes) echo "yes" ;;
    *) echo "no" | exit ;;
  esac
}

# Функция для проверки интернет-соединения
checkInternetConnect() {
  if ! wget -q --spider http://google.com; then
    echo "Ошибка: Нет интернета"
    exit 1
  fi
}

# Добавление пользователя в группу dialout
addingToGroup() {
  sudo usermod -a -G dialout $USER
}

# Установка необходимых пакетов
installPackages() {
  echo "Обновление списка пакетов..."
  sudo apt-get update -y

  local packages=(
    ssh
    sox
    git
    curl
    htop
    mc
    ffmpeg
    net-tools
    unzip
  )

  echo "Установка пакетов: ${packages[*]}"
  sudo apt-get install -y "${packages[@]}"
}


# Основной процесс установки
main() {
  # Проверка окружения
  checkEnvironment

  # Создание рабочей директории
  createDirectory

  # Отключение системных ошибок
  disableErrorPrompts

  # Отключение пароля для sudo
  disableSudoPassword

  # Установка автозапуска
  setupAutostart

  # Добавление пользователя в группу dialout для доступа к COM портам
  addingToGroup

  # Установка пакетов
  installPackages

  # Проверка наличия интернета и установка пакетов
 # checkInternetConnect
 # sudo apt-get update
 # sudo apt-get install -y dos2unix android-tools-adb android-tools-fastboot build-essential libx11-dev git ntp xdotool python3 python3-pip python3-setuptools python3-xdg xcb libxcb-image0

  echo "Установка завершена!"
}

# Запуск основного процесса установки
main
