#!/bin/sh /etc/rc.common
# Copyright (C) 2023 Tianling Shen <cnsztl@immortalwrt.org>

USE_PROCD=1
START=99

extra_command "hot_reload" "Hot-reload service"

CONF="dae"
PROG="/usr/bin/dae"
LOG_DIR="/var/log/dae"

start_service() {
	config_load "$CONF"

	local enabled
	config_get_bool enabled "config" "enabled" "0"
	[ "$enabled" -eq "1" ] || return 1

	local config_file
	config_get config_file "config" "config_file" "/etc/dae/config.dae"

	"$PROG" validate -c "$config_file" || return 1

	local log_maxbackups log_maxsize
	config_get log_maxbackups "config" "log_maxbackups" "1"
	config_get log_maxsize "config" "log_maxsize" "1"

	procd_open_instance "$CONF"
	procd_set_param command "$PROG" run
	procd_append_param command --config "$config_file"
	procd_append_param command --disable-timestamp
	procd_append_param command --logfile "$LOG_DIR/dae.log"
	procd_append_param command --logfile-maxbackups "$log_maxbackups"
	procd_append_param command --logfile-maxsize "$log_maxsize"

	procd_set_param limits core="unlimited"
	procd_set_param limits nofile="1000000 1000000"
	procd_set_param respawn
	# procd_set_param stdout 1
	procd_set_param stderr 1

	procd_close_instance
}

stop_service() {
	rm -rf "$LOG_DIR"
}

service_triggers() {
	procd_add_reload_trigger "$CONF"
}

hot_reload() {
	/etc/init.d/dae running && "$PROG" reload "$(cat /var/run/dae.pid)"
}
