#!/bin/sh
# CLI launcher for native installations. systemd reads broker.env for the
# long-running service; interactive one-shot commands need the same environment.
set -eu

ENV_FILE=/etc/lp-broker/broker.env

# Спрашиваем тот бинарь, который реально работает: активный (его подменяет
# самообновление), иначе origin из пакета.
BROKER_BIN=/opt/lp-broker/bin/broker
if [ -x /opt/lp-broker/current/broker ]; then
	BROKER_BIN=/opt/lp-broker/current/broker
fi

# doctor и support-bundle только читают, зато им нужен системный журнал — он виден
# лишь root. Остальные команды пишут файлы в /opt/lp-broker, поэтому идут под
# lp-broker: иначе служба потом их не прочитает.
case "${1:-}" in
doctor | support-bundle) KEEP_ROOT=1 ;;
*) KEEP_ROOT=0 ;;
esac

if [ "$(id -u)" -eq 0 ] && [ "${KEEP_ROOT}" -eq 0 ]; then
	exec runuser -u lp-broker -- "$0" "$@"
fi

if [ -r "${ENV_FILE}" ]; then
	set -a
	# broker.env is generated and owned by the package (0600 lp-broker).
	# shellcheck disable=SC1091
	. "${ENV_FILE}"
	set +a
fi

exec "${BROKER_BIN}" "$@"
