#!/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