From bd51d089118f08c83dd5eb5b574ff89a9399d4d5 Mon Sep 17 00:00:00 2001 From: "info@pi-farm.de" Date: Fri, 6 Feb 2026 16:35:00 +0000 Subject: [PATCH] =?UTF-8?q?multi-watch.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- multi-watch.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 multi-watch.sh diff --git a/multi-watch.sh b/multi-watch.sh new file mode 100644 index 0000000..a7ee72b --- /dev/null +++ b/multi-watch.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Datei für den Status +STATE_FILE="watch_state.json" +# Liste der zu prüfenden Quellen (Typ|Name|Zusatz) +# Formate: +# DOCKER|user/repo|tag +# GITHUB|user/repo|branch +TARGETS=( + "DOCKER|library/ubuntu|latest" + "DOCKER|grafana/grafana|9.5.0" + "GITHUB|docker/cli|master" + "GITHUB|torvalds/linux|master" +) + +# Falls jq nicht installiert ist +if ! command -v jq &> /dev/null; then echo "Bitte 'jq' installieren!"; exit 1; fi + +# Initialisiere State-Datei falls nicht vorhanden +if [ ! -f "$STATE_FILE" ]; then echo "{}" > "$STATE_FILE"; fi + +for entry in "${TARGETS[@]}"; do + IFS="|" read -r TYPE REPO EXTRA <<< "$entry" + + KEY="${TYPE}_${REPO//[\/\.]/_}_${EXTRA}" + OLD_VAL=$(jq -r ".${KEY} // empty" "$STATE_FILE") + NEW_VAL="" + + if [ "$TYPE" == "DOCKER" ]; then + # Holt das letzte Update-Datum vom Docker Hub + NEW_VAL=$(curl -s "https://hub.docker.com/v2/repositories/${REPO}/tags/${EXTRA}" | jq -r '.last_updated // empty') + elif [ "$TYPE" == "GITHUB" ]; then + # Holt den neuesten Commit-SHA vom GitHub Branch + NEW_VAL=$(curl -s "https://api.github.com/repos/${REPO}/branches/${EXTRA}" | jq -r '.commit.sha // empty') + fi + + if [ -z "$NEW_VAL" ] || [ "$NEW_VAL" == "null" ]; then + echo "Fehler: Konnte Daten für $REPO ($EXTRA) nicht abrufen." + continue + fi + + if [ -n "$OLD_VAL" ] && [ "$OLD_VAL" != "$NEW_VAL" ]; then + echo "🔔 UPDATE GEFUNDEN: $REPO ($EXTRA)" + echo " Alt: $OLD_VAL" + echo " Neu: $NEW_VAL" + # HIER: Befehl für E-Mail oder Push-Dienst einfügen + else + echo "✅ $REPO ($EXTRA) ist aktuell." + fi + + # Status aktualisieren + TEMP_JSON=$(jq ".${KEY} = \"$NEW_VAL\"" "$STATE_FILE") + echo "$TEMP_JSON" > "$STATE_FILE" +done \ No newline at end of file