Add Last Update widget to Homepage via record-update script

record-update parses nvd diff after switch and writes latest.json;
Homepage polls a local-only nginx listener and renders date/changes/
closure/kernel via a customapi widget.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ediblerope 2026-04-16 20:58:19 +01:00
parent 916c1d1c2d
commit f57c6e99ec
5 changed files with 76 additions and 1 deletions

41
scripts/record-update.sh Normal file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Parse `nvd diff <old> <new>` output and write a JSON summary
# consumed by the Homepage dashboard's customapi widget.
set -euo pipefail
OLD="${1:-}"
NEW="${2:-/run/current-system}"
OUT_DIR="/var/lib/homepage-updates"
OUT_FILE="$OUT_DIR/latest.json"
if [ -z "$OLD" ]; then
echo "usage: record-update <old-system> [new-system]" >&2
exit 1
fi
mkdir -p "$OUT_DIR"
DIFF=$(nvd diff "$OLD" "$NEW" 2>&1 || true)
CHANGES=$(printf '%s\n' "$DIFF" | grep -cE '^\[[UAR][.*]\]' || true)
CLOSURE=$(printf '%s\n' "$DIFF" | grep -oE 'disk usage [+-][0-9.]+[A-Za-z]*B?' | head -1 | sed 's/disk usage //')
CLOSURE="${CLOSURE:-+0B}"
KERNEL=$(uname -r)
DATE=$(date '+%Y-%m-%d %H:%M')
if [ "$CHANGES" = "0" ]; then
LABEL="No changes"
else
LABEL="$CHANGES package changes"
fi
cat > "$OUT_FILE.tmp" <<EOF
{
"date": "$DATE",
"changes": "$LABEL",
"closure": "$CLOSURE",
"kernel": "$KERNEL"
}
EOF
mv "$OUT_FILE.tmp" "$OUT_FILE"