#!/bin/bash
set -e

LOG="/var/log/upgrade_trixie.log"
# Czyścimy plik logu przy starcie
> "$LOG"

# 1. Totalne wyciszenie interaktywnych okienek i pagerów
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none

# 2. Zablokowanie pakietu needrestart (żeby nie sypał okienkiem z pytaniem o restart usług)
export NEEDRESTART_MODE=l
export NEEDRESTART_SUSPEND=1

echo "Rozpoczęto aktualizację. Szczegółowy przebieg leci do $LOG..."

apt update >> "$LOG" 2>&1
apt upgrade -y >> "$LOG" 2>&1

cp -r /etc/apt /etc/apt.bak
echo "Kopia zapasowa /etc/apt zakończona."

# 3. Podmiana nazw kodowych rozbita na dwa polecenia (unikamy błędów przy wklejaniu / SSH)
find /etc/apt/ -type f -name "*.list" -exec sed -i 's/bookworm/trixie/g' {} +
find /etc/apt/ -type f -name "*.sources" -exec sed -i 's/bookworm/trixie/g' {} +
echo "Podmieniono repozytoria na Debian 13 (trixie)."

apt update >> "$LOG" 2>&1

# 4. Dodane opcje dpkg wyciszające konflikty starych plików konfiguracyjnych już na etapie minimalnego upgrade'u
apt upgrade --without-new-pkgs -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" >> "$LOG" 2>&1
echo "Minimalna aktualizacja zakończona."

# 5. Pełny upgrade z wymuszeniem zachowania starych konfiguracji
apt full-upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" >> "$LOG" 2>&1
echo "Pełna aktualizacja zakończona."

apt autoremove -y >> "$LOG" 2>&1
apt autoclean -y >> "$LOG" 2>&1

# 6. Automatyczna odpowiedź "y" do modernize-sources i zabezpieczenie (|| true) przed ubiciem przez set -e
echo "y" | apt modernize-sources >> "$LOG" 2>&1 || true
apt update >> "$LOG" 2>&1

echo "Czyszczenie zakończone."
echo "Aktualizacja zakończona. Za 10 sekund system uruchomi sie ponownie."
sleep 10
reboot now
