diff --git a/multi-watch.sh b/multi-watch.sh index 0600bd4..1143631 100644 --- a/multi-watch.sh +++ b/multi-watch.sh @@ -68,13 +68,22 @@ while true; do 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." + # Wir generieren das neue JSON + NEW_JSON_CONTENT=$(jq ".[\"$KEY\"] = \"$NEW_VAL\"" "$STATE_FILE" 2>&1) + JQ_EXIT_CODE=$? + + if [ $JQ_EXIT_CODE -eq 0 ] && [ -n "$NEW_JSON_CONTENT" ]; then + # Nur schreiben, wenn jq Erfolg hatte UND Inhalt da ist + echo "$NEW_JSON_CONTENT" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE" + echo " 💾 gespeichert." else - echo " ❌ JQ FEHLER: $TEMP_DATA" + echo " ❌ FEHLER BEIM SPEICHERN!" + echo " jq Exit Code: $JQ_EXIT_CODE" + echo " jq Output: $NEW_JSON_CONTENT" + # Notfall-Reset, falls die Datei korrupt ist, damit es beim nächsten Mal wieder geht + if ! jq -e . "$STATE_FILE" >/dev/null 2>&1; then + echo "{}" > "$STATE_FILE" + fi fi else echo " ✅ Aktuell."