# its_alive.R - Watchdog-Skript für update_all.R
#
# Wird per CRON-Job aufgerufen: Wenn das letzte Update der Log-Datei "wahl.log"
# länger als x Minuten zurückliegt, löst das Skript einen Alarm über Teams aus.

# Mehr als die Datumsfunktionen brauchen wir nicht
library(lubridate)
library(this.path)

# Das Projektverzeichnis "obwahl" als Arbeitsverzeichnis wählen
# Aktuelles Verzeichnis als workdir
setwd(this.path::this.dir())
# Aus dem R-Verzeichnis eine Ebene rauf
setwd("..")

# Teams-Funktionen einbinden
source("R/messaging.R")

# Maximales Alter in Sekunden?
max_alter = 120

# Startzeit festhalten
ts = now()

# Gibt es überhaupt eine Logdatei? 

if (file.exists("obwahl.log")) {
  metadaten <- file.info("obwahl.log")
  # Berechne Alter der Logdatei in Sekunden
  alter = as.integer(difftime(ts,metadaten$mtime,units="secs"))
  if (alter > max_alter)
  {
    cat("WATCHDOG its_alive.R: obwahl.log seit ",alter," Sekunden unverändert")
    cat("Benenne obwahl.log um in obwahl_crash.log")
    file.rename("obwahl.log","obwahl_crash.log")
    teams_error("PROGRAMM STEHEN GEBLIEBEN? obwahl.log ist seit ",alter," Sekunden unverändert")
  }
} else {
  # Tue nichts.
  cat("its_alive.R: obwahl.log im Arbeitsverzeichnis",getwd(),"nicht gefunden")
}