#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=/dev/null
source "$SCRIPT_DIR/libenv.sh"

load_env() {
  limristem_mail_load_env_file "$LIMRISTEM_MAIL_CONFIG_DIR/limristem-mail.env"
}

load_env

DOMAIN=${1:-${LIMRISTEM_MAIL_PRIMARY_DOMAIN:-}}
MAIL_HOST=${2:-${LIMRISTEM_MAIL_HOSTNAME:-}}
PUBLIC_IP=${3:-${LIMRISTEM_MAIL_PUBLIC_IP:-}}
SELECTOR=${4:-${LIMRISTEM_MAIL_DKIM_SELECTOR:-default}}
MTA_STS_HOST=${5:-${LIMRISTEM_MAIL_MTA_STS_HOST:-mta-sts.${DOMAIN}}}
REPORT_DIR=${6:-${LIMRISTEM_MAIL_LIVE_BUNDLE_DIR:-/var/lib/limristem-mail/live-deployment}/reports}

if [[ -z "$DOMAIN" || -z "$MAIL_HOST" ]]; then
  echo "Usage: deliverability-report.sh <domain> [mail-host] [public-ip] [selector] [mta-sts-host] [report-dir]" >&2
  exit 1
fi

mkdir -p "$REPORT_DIR"
timestamp=$(date -u +%Y%m%dT%H%M%SZ)
report_file="$REPORT_DIR/deliverability-${timestamp}.txt"

if "$SCRIPT_DIR/deliverability-check.sh" "$DOMAIN" "$MAIL_HOST" "$PUBLIC_IP" "$SELECTOR" "$MTA_STS_HOST" | tee "$report_file"; then
  cp "$report_file" "$REPORT_DIR/latest.txt"
else
  cp "$report_file" "$REPORT_DIR/latest.txt"
  exit 1
fi
