#!/usr/bin/env bash
# ZION TERMINAL - Atualizacao segura do sistema
# Cyberdeck criado por Pablo Murad em 2026
export LC_ALL=C
. /opt/zion-terminal/bin/zion-lib.sh 2>/dev/null
LOG=/opt/zion-terminal/logs/update.log
[ "$1" = "--help" ] && { echo "Uso: zion atualizar — atualiza indices, mostra o que sera atualizado, pede confirmacao e aplica (respeitando o hold do kernel). Registra em $LOG."; exit 0; }

printf '%b  ZION TERMINAL — Atualizacao%b\n' "$ZP$ZB" "$ZR"; zion_regua 50
echo "  Atualizando indices (apt update)..."
sudo apt-get update -qq 2>/dev/null

mapfile -t ups < <(apt list --upgradable 2>/dev/null | grep -v Listing)
n=${#ups[@]}
if [ "$n" -eq 0 ]; then printf '  %bSistema ja atualizado. Nada a fazer.%b\n' "$ZOK" "$ZR"; exit 0; fi
printf '  %b%d pacote(s) a atualizar:%b\n' "$ZWARN" "$n" "$ZR"
printf '   • %s\n' "${ups[@]:0:20}"
[ "$n" -gt 20 ] && echo "   ... e mais $((n-20))"
echo "  (kernel/BSP em hold NAO serao tocados: $(apt-mark showhold | tr '\n' ' '))"
read -r -p "$(printf '%b  Aplicar atualizacoes? [s/N]:%b ' "$ZWARN" "$ZR")" r
[ "$r" = s ] || [ "$r" = S ] || { echo "  Cancelado."; exit 0; }

echo "  Aplicando..."
sudo DEBIAN_FRONTEND=noninteractive apt-get -y full-upgrade 2>&1 | tee -a "$LOG" | grep -iE "Setting up|Removing|newly" | sed 's/^/   /'
printf '[%s] update aplicado (%d pacotes)\n' "$(date '+%F %T')" "$n" >> "$LOG"
if [ -f /var/run/reboot-required ]; then printf '  %b● Reinicializacao recomendada.%b\n' "$ZWARN" "$ZR"; else printf '  %b● Concluido. Reboot nao necessario.%b\n' "$ZOK" "$ZR"; fi
