#!/bin/sh

# PROVIDE: minetest
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf[.local] to enable minetest server
#
# minetest_enable (bool):  Set to "NO" by default
#                          Set it to "YES" to enable minetest server
# minetest_config (str):   Path to config file (required).
#                          (default: /usr/local/etc/minetest.conf)
# minetest_rundir (str):   Path to directory holding a pidfile.
#                          (default: /var/run/minetest)
# minetest_user (str):     User to run as
#                          (default: minetest)
# minetest_group (str):    Group to run as
#                          (default: minetest)
# minetest_logdir (str):   Path to log directory
#                          (default: /var/log/minetest)
# minetest_dbdir (str):    Path to world database directory
#                          (default: /var/db/minetest)
# minetest_gameid (str):   Path to world database directory
#                          (default: minetest_game)
# minetest_args (str):     Additional arguments to minetestserver
#                          (default: "")

. /etc/rc.subr

name=minetest
rcvar=minetest_enable

load_rc_config ${name}

: ${minetest_enable="NO"}
: ${minetest_config="/usr/local/etc/minetest.conf"}
: ${minetest_rundir="/var/run/minetest"}
: ${minetest_user="minetest"}
: ${minetest_group="minetest"}
: ${minetest_logdir="/var/log/minetest"}
: ${minetest_dbdir="/var/db/minetest"}
: ${minetest_gameid="minetest_game"}
: ${minetest_args=""}

command=/usr/sbin/daemon
procname=/usr/local/bin/minetestserver
pidfile=${minetest_rundir}/minetest.pid
command_args="-c -f -p ${pidfile} /usr/bin/env HOME='${minetest_dbdir}' ${procname} --config ${minetest_config} --logfile ${minetest_logdir}/debug.log --world ${minetest_dbdir}/world --gameid ${minetest_gameid} ${minetest_args}"
required_files=${minetest_config}
start_precmd=minetest_prestart

minetest_prestart () {
	if ! ${procname} --gameid list | grep -q "."; then
		echo "Warning: no games installed (\`${procname} --gameid list\` is empty). You may want to install games/minetest_game or other games from https://content.minetest.net/." 1>&2
	fi
	if [ ! -d ${minetest_rundir} ]; then
		mkdir -m 755 -p ${minetest_rundir}
		chown -R ${minetest_user}:${minetest_group} ${minetest_rundir}
	fi
	if [ ! -d ${minetest_logdir} ]; then
		mkdir -m 755 -p ${minetest_logdir}
		chown -R ${minetest_user}:${minetest_group} ${minetest_logdir}
	fi
	if [ ! -d ${minetest_dbdir} ]; then
		mkdir -m 755 -p ${minetest_dbdir}/data
		chown -R ${minetest_user}:${minetest_group} ${minetest_dbdir}
	fi
}

run_rc_command "$1"
