#!/bin/bash
# curator-idle-watchdog.sh
# Prüft den Curator-Idle-Status und triggert Reaktivierung nach 14 Tagen

set -euo pipefail

LOG_DIR="/home/hitonabi/.hermes/logs/curator"
LOG_FILE="$LOG_DIR/idle-watchdog-$(date +%Y%m%d).log"
THRESHOLD_DAYS=14

mkdir -p "$LOG_DIR"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Curator-Status auslesen
STATUS_OUTPUT=$(hermes curator status 2>&1) || {
    log "FEHLER: hermes curator status fehlgeschlagen"
    exit 1
}

# Prüfen, ob Curator ENABLED ist
if ! echo "$STATUS_OUTPUT" | grep -q "^curator: ENABLED$"; then
    log "INFO: Curator ist nicht ENABLED → überspringe Prüfung"
    exit 0
fi

# Letzten Lauf extrahieren (Format: "last run:       17d ago")
LAST_RUN_LINE=$(echo "$STATUS_OUTPUT" | grep "^  last run:" | head -1)
if [[ -z "$LAST_RUN_LINE" ]]; then
    log "FEHLER: Konnte 'last run' nicht aus Status extrahieren"
    exit 1
fi

LAST_RUN_TEXT=$(echo "$LAST_RUN_LINE" | sed 's/^  last run: *//')
log "Letzter Curator-Lauf: $LAST_RUN_TEXT"

# Prüfen, ob "d ago" vorhanden ist
if [[ "$LAST_RUN_TEXT" =~ ([0-9]+)d\ ago ]]; then
    DAYS_SINCE_LAST_RUN="${BASH_REMATCH[1]}"
else
    log "INFO: Kein 'd ago' gefunden (möglicherweise <1d oder nie gelaufen) → überspringe"
    exit 0
fi

log "Tage seit letztem Lauf: $DAYS_SINCE_LAST_RUN"

# Threshold prüfen
if (( DAYS_SINCE_LAST_RUN < THRESHOLD_DAYS )); then
    log "INFO: Curator ist innerhalb des erlaubten Intervalls ($DAYS_SINCE_LAST_RUN < $THRESHOLD_DAYS Tage) → kein Trigger nötig"
    exit 0
fi

# Reaktivierung triggern
log "WARNUNG: Curator ist für $DAYS_SINCE_LAST_RUN Tage idle (>= $THRESHOLD_DAYS) → triggere 'hermes curator run'"
if hermes curator run 2>&1 | tee -a "$LOG_FILE"; then
    log "ERFOLG: Curator-Reaktivierung gestartet"
else
    log "FEHLER: Curator-Reaktivierung fehlgeschlagen"
    exit 1
fi
