#!/bin/bash
#
# Copyright (C) 2026 Nethesis S.r.l.
# SPDX-License-Identifier: GPL-2.0-only
#
# Restore extra packages installed by the user after a system upgrade.
# Runs via procd init script which handles respawn on failure.
#

if ! grep -qE '\w+\s+overlay$' /etc/backup/installed_packages.txt &>/dev/null; then
    exit 0
fi

# Check network connectivity
if ! ping -c 1 -W 5 8.8.8.8 >/dev/null 2>&1 && ! ping -c 1 -W 5 1.1.1.1 >/dev/null 2>&1; then
    echo "WAN not available, will retry later"
    exit 1
fi

apk update
if [ $? -ne 0 ]; then
    echo "Failed to update package lists, will retry later"
    exit 1
fi

# Restore packages and track failures
failed_packages=""

while IFS= read -r package; do
    if ! apk info -e "$package" > /dev/null 2>&1; then
        apk add "$package"
        if [ $? -eq 0 ]; then
            echo "Restored package: $package"
        else
            echo "Failed to restore package: $package"
            failed_packages="$failed_packages $package"
        fi
    fi
done < <(grep -E '\w+\s+overlay$' /etc/backup/installed_packages.txt | awk '{print $1}')

if [ -z "$failed_packages" ]; then
    /etc/init.d/ns-restore-extra-packages stop
    /etc/init.d/ns-restore-extra-packages disable
    exit 0
else
    echo "Some packages failed to restore, will retry later"
    exit 1
fi
