From 969716d60e9c9c72a265c6f8387a45e7cdd2f03f Mon Sep 17 00:00:00 2001 From: pi-farm Date: Fri, 6 Feb 2026 23:26:47 +0100 Subject: [PATCH] fix writing in watch_status.json --- multi-watch.sh | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/multi-watch.sh b/multi-watch.sh index 30a1a08..dc1e098 100644 --- a/multi-watch.sh +++ b/multi-watch.sh @@ -55,18 +55,22 @@ while true; do fi # Logik: Wenn kein alter Wert da ist ODER der neue Wert anders ist - if [ -z "$OLD_VAL" ]; then - echo " 🆕 Erstaufnahme in Datenbank." - # Wir schreiben hier sofort, damit der Zustand gespeichert wird - TEMP_JSON=$(jq ".[\"$KEY\"] = \"$NEW_VAL\"" "$STATE_FILE") - echo "$TEMP_JSON" > "$STATE_FILE" - elif [ "$OLD_VAL" != "$NEW_VAL" ]; then - MSG="Update für $REPO ($EXTRA)! Alt: $OLD_VAL | Neu: $NEW_VAL" - echo " 🔔 $MSG" - UPDATES_FOUND="${UPDATES_FOUND}${MSG}\n" - # Wert aktualisieren - TEMP_JSON=$(jq ".[\"$KEY\"] = \"$NEW_VAL\"" "$STATE_FILE") - echo "$TEMP_JSON" > "$STATE_FILE" + if [ -z "$OLD_VAL" ] || [ "$OLD_VAL" != "$NEW_VAL" ]; then + if [ -z "$OLD_VAL" ]; then + echo " 🆕 Erstaufnahme in Datenbank." + else + echo " 🔔 Update gefunden!" + UPDATES_FOUND="${UPDATES_FOUND}Update für $REPO ($EXTRA)\n" + fi + + # SICHERES SCHREIBEN: + # Wir schreiben in eine temporäre Datei und verschieben diese dann. + if TEMP_DATA=$(jq ".[\"$KEY\"] = \"$NEW_VAL\"" "$STATE_FILE" 2>&1); then + echo "$TEMP_DATA" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE" + echo " 💾 Datei erfolgreich aktualisiert." + else + echo " ❌ JQ FEHLER: $TEMP_DATA" + fi else echo " ✅ Aktuell." fi