#!/usr/bin/env bash # Zeigt, ob es ein neues Open-Notebook-Release gibt. Aendert NICHTS. # # Gedacht fuer den Sitzungsstart: Du siehst, worauf du laeufst und ob etwas Neues da # ist — und entscheidest selbst, wann du migrierst (./scripts/update_stack.sh). # Bewusst kein Auto-Update: ein Image-Update migriert die Datenbank und kann unsere # Anpassungen brechen (siehe scripts/smoke_test.sh). set -uo pipefail REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$REPO" TAG="lfnovo/open_notebook:v1-latest" # Gezielt aus der open_notebook-Zeile: ein blindes grep auf den ersten Digest der Datei # erwischt surrealdb (steht weiter oben) und vergleicht dann Aepfel mit Birnen. pinned="$(grep -oP 'lfnovo/open_notebook\S*@\Ksha256:[0-9a-f]+' docker-compose.yml | head -1)" running_ver="$(docker compose exec -T open_notebook grep -m1 '^version' /app/pyproject.toml 2>/dev/null | grep -oP '(?<=")[^"]+' || echo '?')" echo "Laeuft gerade" echo " Version : ${running_ver}" echo " Digest : ${pinned:-(nicht gepinnt!)}" echo echo "Verfuegbar" latest_rel="$(curl -sf -m 10 https://api.github.com/repos/lfnovo/open-notebook/releases/latest | python3 -c "import json,sys;d=json.load(sys.stdin);print(d['tag_name'],'vom',d['published_at'][:10])" 2>/dev/null)" echo " Release : ${latest_rel:-(GitHub nicht erreichbar)}" remote="$(docker buildx imagetools inspect "$TAG" --format '{{.Manifest.Digest}}' 2>/dev/null)" if [ -z "$remote" ]; then echo " Image : (Registry nicht erreichbar)" exit 0 fi echo " Image : $remote" echo if [ "$remote" = "$pinned" ]; then echo "Du laeufst auf dem aktuellen Release. Nichts zu tun." exit 0 fi cat <