#!/bin/sh

# PROVIDE: oura
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable this service:
#
# oura_enable:          Set to YES to enable oura.
#                               Default: "NO"
#
# oura_home:            An absolute path to the daemon home directory.
#                               The directory will be created if not exists.
#                               Default: "/var/db/oura"
#
# oura_config:          An absolute path to the oura configuration TOML file.
#                               Default: "${oura_home}/daemon.toml"
#
# oura_flags:           Any additional command line flags to pass to oura.
#                       "daemon" and "--config" flags are already included.
#                       See: https://txpipe.github.io/oura/usage/daemon.html
#                               Default: ""
#

. /etc/rc.subr

name=oura
desc="oura daemon"
rcvar=oura_enable
command=/usr/local/bin/oura

start_cmd="${name}_start"
start_precmd="${name}_prestart"
stop_cmd="${name}_stop"
status_cmd="${name}_status"

extra_commands="status"

load_rc_config $name
: ${oura_enable:=NO}
: ${oura_home:="/var/db/oura"}
: ${oura_config:="${oura_home}/daemon.toml"}
: ${oura_flags:=""}

pidfile="/var/run/oura.pid"
flags=" daemon --config ${oura_config} ${oura_flags}"

sanity_check()
{
    if [ ! -f ${oura_config} ]
    then
        echo "Invalid value for oura_config: missing file ${oura_config}"
        echo "See: https://txpipe.github.io/oura/usage/daemon.html"
        exit 1
    fi
    return 0
}

oura_prestart()
{
    # Create oura home directory, if not exists
    if [ ! -d "${oura_home}" ]; then
        mkdir -p "${oura_home}"
    fi

    sanity_check
}

oura_start()
{
    check_startmsgs && echo "Starting ${name}."
    cd $oura_home && /usr/sbin/daemon -p $pidfile -S -T oura \
        ${command} ${flags} 2>&1 > /dev/null
}

oura_stop()
{
    pid=$(check_pidfile "${pidfile}" "${command}")
    if [ -z "${pid}" ]
    then
        echo "${name} is not running"
        return 1
    else
        echo "Stopping ${name}."
        /bin/kill -INT "$pid"
        wait_for_pids "$pid"
    fi
}

oura_status()
{
    pid=$(check_pidfile "${pidfile}" "${command}")
    if [ -z "${pid}" ]
    then
      echo "${name} is not running"
      return 1
    else
      echo ${name} is running as pid $pid
    fi
}

run_rc_command "$1"
