#!/bin/sh
set -e

PKG="${1:-kakadu}"
REL="${2:-}"
APT_LIST="/etc/apt/sources.list.d/kakadu.list"
APT_RETRIES=3
APT_TIMEOUT_SEC=10

export DEBIAN_FRONTEND=noninteractive

echo "[apt-script] upgrading package: $PKG"

# обновляем индексы ТОЛЬКО по kakadu.list
apt-get \
  -o Dir::Etc::sourcelist="$APT_LIST" \
  -o Dir::Etc::sourceparts="-" \
  -o APT::Get::List-Cleanup="0" \
  -o Acquire::Retries="$APT_RETRIES" \
  -o Acquire::https::Timeout="$APT_TIMEOUT_SEC" \
  -o Acquire::http::Timeout="$APT_TIMEOUT_SEC" \
  update || true

# обновляем только наш пакет из нашего листа
apt-get \
  -o Dir::Etc::sourcelist="$APT_LIST" \
  -o Dir::Etc::sourceparts="-" \
  -o APT::Get::List-Cleanup="0" \
  -o Acquire::Retries="$APT_RETRIES" \
  -o Acquire::https::Timeout="$APT_TIMEOUT_SEC" \
  -o Acquire::http::Timeout="$APT_TIMEOUT_SEC" \
  install -y --only-upgrade "$PKG"

echo "[apt-script] done"

# Отложенный перезапуск UI от имени владельца relaunch-скрипта (после выхода Electron).
if [ -n "$REL" ] && [ -f "$REL" ]; then
  (
    sleep 5
    if [ ! -f "$REL" ]; then
      exit 0
    fi
    UID_NUM=$(stat -c '%u' "$REL" 2>/dev/null) || exit 0
    UN=$(getent passwd "$UID_NUM" 2>/dev/null | cut -d: -f1)
    if [ -z "$UN" ]; then
      echo "[apt-script] relaunch: no user for uid $UID_NUM"
      exit 0
    fi
    if ! command -v runuser >/dev/null 2>&1; then
      echo "[apt-script] relaunch: runuser not found"
      exit 0
    fi
    echo "[apt-script] relaunch as $UN via $REL"
    runuser -u "$UN" -- /bin/sh "$REL" || true
  ) &
fi
