#!/usr/bin/env bash
#
# onx-exim-queue-flush — Exim mail queue'sunu yeniden çalıştır.
#
# Postfix postqueue-flush muadili. Exim eşdeğeri:
#   exim -qf   → tüm queue'yu force-process (frozen dahil)
#   exim -q    → tüm queue'yu normal-process (sadece due/retry zamanı gelmiş)
#
# Default: -q (normal — production-safe; frozen mailleri elle inceleyelim).
# Frozen flush için: input '{"force":true}'

set -uo pipefail
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
source "${SCRIPT_DIR}/_lib/common.sh"

require_root

# Input opsiyonel — yoksa default davranış
INPUT="$(cat 2>/dev/null || echo '{}')"
force_flag=""
if echo "$INPUT" | jq -e 'type == "object" and (.force == true)' >/dev/null 2>&1; then
    force_flag="f"
fi

EXIM_BIN=""
for bin in /usr/sbin/exim /usr/sbin/exim4; do
    [[ -x "$bin" ]] && { EXIM_BIN="$bin"; break; }
done
[[ -z "$EXIM_BIN" ]] && onx_die 2 "exim binary bulunamadı (kurulu mu?)"

# Queue flush — background mode (exim queue runner subprocess)
if "$EXIM_BIN" -q${force_flag} 2>&1; then
    onx_json_out ok true flushed true force "$([ -n "$force_flag" ] && echo true || echo false)" \
        message "Exim queue runner tetiklendi (mailler arka planda işleniyor)"
else
    rc=$?
    onx_die 3 "exim queue flush başarısız (rc=$rc)"
fi
