#!/bin/bash
# Sprawdza, czy w repo jest nowsza wersja nivato-logger.
# Wyjście (stdout): INSTALLED=… / CANDIDATE=… / AVAILABLE=0|1
# Exit zawsze 0 przy udanym sprawdzeniu; 1 przy błędzie narzędzi.
#
# apt-get update poza cgroup nivato-logger.service (MemoryMax).
set -euo pipefail

export DEBIAN_FRONTEND=noninteractive
PACKAGE="nivato-logger"
DATA_DIR="${NIVATO_DATA_DIR:-/opt/nivato-logger/data}"

if [ "${NIVATO_APT_CHECK_TRANSIENT:-}" != "1" ]; then
    systemctl reset-failed nivato-logger-apt-check.service 2>/dev/null || true
    systemctl stop nivato-logger-apt-check.service 2>/dev/null || true
    exec /usr/bin/systemd-run --wait --pipe --collect \
        --unit=nivato-logger-apt-check \
        -p Type=oneshot \
        -p TimeoutStartSec=300 \
        --setenv=NIVATO_APT_CHECK_TRANSIENT=1 \
        --setenv=NIVATO_DATA_DIR="$DATA_DIR" \
        --setenv=DEBIAN_FRONTEND=noninteractive \
        "$0" "$@"
fi

# shellcheck source=/dev/null
. /opt/nivato-logger/bin/apt-ensure-keyring
nivato_ensure_apt_keyring_and_sources || true

/usr/bin/apt-get update -o Acquire::Retries=2 -qq 2>/dev/null || true

installed="$(dpkg-query -W -f='${Version}' "$PACKAGE" 2>/dev/null || true)"
candidate="$(apt-cache policy "$PACKAGE" 2>/dev/null | awk '/Candidate:/ { print $2; exit }')"

available=0
if [ -n "$candidate" ] && [ "$candidate" != "(none)" ]; then
    if [ -z "$installed" ] || dpkg --compare-versions "$installed" lt "$candidate"; then
        available=1
    fi
fi

printf 'INSTALLED=%s\n' "${installed:-}"
printf 'CANDIDATE=%s\n' "${candidate:-}"
printf 'AVAILABLE=%s\n' "$available"
exit 0
