#!/usr/bin/env bash
# archivmail — Cron-Wrapper für 'index-pending' (PROJ-58 batch_mode).
#
# Verhindert überlappende Läufe per PID-Lockfile, analog zum mailpiler-Vorbild
# (/usr/libexec/piler/indexer.delta.sh, MAINTMPFILE/DELTATMPFILE-Muster):
# Läuft ein Cron-Job länger als das Intervall (z.B. großer Backlog), würde
# sonst ein zweiter, parallel gestarteter Lauf zusätzliche Last erzeugen statt
# sie zu glätten — genau das soll batch_mode ja vermeiden.
set -euo pipefail

LOCKFILE=/var/run/archivmail/index-pending.lock
LOGTAG=archivmail-index-pending
mkdir -p "$(dirname "$LOCKFILE")"

if [[ -f "$LOCKFILE" ]]; then
    echo "INDEX-PENDING ERROR: bereits laufender Lauf seit $(cat "$LOCKFILE")" | logger -t "$LOGTAG"
    exit 0
fi

date > "$LOCKFILE"
trap 'rm -f "$LOCKFILE"' EXIT

echo "INDEX-PENDING INFO: Lauf gestartet" | logger -t "$LOGTAG"
/opt/archivmail/archivmail index-pending --config /etc/archivmail/config.yml --limit "${ARCHIVMAIL_INDEX_LIMIT:-500}"
echo "INDEX-PENDING INFO: Lauf beendet" | logger -t "$LOGTAG"
