#!/usr/bin/env bash
# Process cluster_sync_queue and refresh routed transport maps.
set -euo pipefail

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

ENV_FILE=$(limristem_mail_resolve_main_env_file)
limristem_mail_load_env_file "$ENV_FILE"

BASE_DIR=${LIMRISTEM_MAIL_BASE_DIR:-/opt/limristem-mail}
MODE=${LIMRISTEM_MAIL_TOPOLOGY_MODE:-standalone}

if [[ "$MODE" == "standalone" ]]; then
  exit 0
fi

if [[ -x "$BASE_DIR/limristem-mail" ]]; then
  "$BASE_DIR/limristem-mail" topology process-sync-queue --json || true
  if [[ $EUID -eq 0 ]]; then
    "$BASE_DIR/limristem-mail" topology refresh-transport --json || true
  elif command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
    sudo -n "$BASE_DIR/bin/manage-topology.sh" refresh-transport 2>/dev/null \
      || sudo -n "$SCRIPT_DIR/manage-topology.sh" refresh-transport 2>/dev/null \
      || "$BASE_DIR/limristem-mail" topology refresh-transport --json || true
  else
    "$BASE_DIR/limristem-mail" topology refresh-transport --json || true
  fi
fi
