#!/bin/bash
set -euo pipefail

# === Проверяем, что запуск от root ===
if [[ $EUID -ne 0 ]]; then
   echo "Ошибка: этот скрипт должен быть запущен от root"
   exit 1
fi

echo "Проверяем наличие sudo..."

# === Установка sudo если его нет ===
if ! command -v sudo &>/dev/null; then
    echo "sudo не найден — устанавливаем..."
    apt update -y
    apt install -y sudo
    echo "sudo успешно установлен."
else
    echo "sudo уже установлен."
fi

echo "Автообновление системы и проверка готовности к работе..."

check_command() { command -v "$1" &>/dev/null; }
check_package() { dpkg -s "$1" &>/dev/null; }
check_file() { [[ -f "$1" ]]; }
check_dir() { [[ -d "$1" ]]; }

STEPS_DONE=()

# === Шаг 1: Обновление репозиториев ===
echo "Обновляем репозитории..."
apt update -qq
STEPS_DONE+=("update_repos")

# === Шаг 2: Обновление пакетов ===
echo "Обновляем установленные пакеты..."
apt upgrade -y
apt full-upgrade -y
STEPS_DONE+=("upgrade_packages")

# === Шаг 3: Удаление ненужных пакетов ===
echo "Удаляем ненужные пакеты..."
apt autoremove -y
apt autoclean -y
STEPS_DONE+=("clean_packages")

# === Шаг 4: Проверка на необходимость перезагрузки ===
if check_file /var/run/reboot-required; then
  echo "Система требует перезагрузки для применения обновлений."
  read -p "Перезагрузить систему сейчас? (y/n): " -n 1 -r
  echo
  if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "Перезагружаем систему..."
    reboot
  else
    echo "Перезагрузка отложена. Пожалуйста, перезагрузите систему позже."
  fi
else
  echo "Перезагрузка не требуется."
fi
STEPS_DONE+=("check_reboot")

# === Шаг 5: Проверка системных сервисов ===
echo "Проверяем статус ключевых системных сервисов..."
if systemctl is-system-running --quiet; then
  echo "Система работает нормально."
else
  echo "Предупреждение: Некоторые сервисы могут требовать внимания."
  systemctl status
fi
STEPS_DONE+=("check_services")

# === Финальная проверка ===
echo
echo "=== Итоговая проверка ==="
echo "Выполнено этапов: ${#STEPS_DONE[@]}/5"
echo
echo "Обновление системы завершено!"
echo "Система готова к дальнейшей работе."
echo
echo "Полезные команды:"
echo "  journalctl -xe -u <service>   — логи сервиса"
echo "  top / htop                    — мониторинг ресурсов"
echo "  df -h                         — проверка дисков"
echo "  uptime                        — время работы системы"
echo
echo "Если всё в порядке — продолжайте работу!"
