#!/bin/sh
CARGO_TARGET_DIR=${CARGO_TARGET_DIR:-${PWD}/target}
POLICY_PATH=${POLICY_PATH:-/opt/kumomta/etc/policy/init.lua}

KUMOD=${KUMOD:-kumod}

if ! test -x ${KUMOD} ; then
  for candidate in /opt/kumomta/sbin/kumod "${CARGO_TARGET_DIR}/release/kumod" "${CARGO_TARGET_DIR}/debug/kumod" ; do
    if test -x "${candidate}" ; then
      KUMOD="${candidate}"
      break;
    fi
  done

  if ! test -x "${KUMOD}" ; then
    echo "Couldn't find kumod"
    exit 1
  fi
fi

script=$(mktemp)
trap "rm -f -- '$script'" EXIT
cat >${script} <<-EOT
local kumo = require 'kumo'
dofile "${POLICY_PATH}"

kumo.on('main', function(queue_name)
  local config = kumo.invoke_get_queue_config(queue_name)
  print(kumo.serde.json_encode_pretty(config))
end)
EOT

is_user_root () { [ "${EUID:-$(id -u)}" -eq 0 ]; }

RUN_AS_USER=""
if is_user_root ; then
  chmod a+rx $script
  RUN_AS_USER="--user kumod"
fi

${KUMOD} $RUN_AS_USER --policy $script --script -- "$@"


