1#!/bin/sh
2
3# PROVIDE: minetest
4# REQUIRE: LOGIN
5# KEYWORD: shutdown
6#
7# Add the following line to /etc/rc.conf[.local] to enable minetest server
8#
9# minetest_enable (bool):  Set to "NO" by default
10#                          Set it to "YES" to enable minetest server
11# minetest_config (str):   Path to config file (required).
12#                          (default: /usr/local/etc/minetest.conf)
13# minetest_rundir (str):   Path to directory holding a pidfile.
14#                          (default: /var/run/minetest)
15# minetest_user (str):     User to run as
16#                          (default: minetest)
17# minetest_group (str):    Group to run as
18#                          (default: minetest)
19# minetest_logdir (str):   Path to log directory
20#                          (default: /var/log/minetest)
21# minetest_dbdir (str):    Path to world database directory
22#                          (default: /var/db/minetest)
23# minetest_gameid (str):   Path to world database directory
24#                          (default: minetest_game)
25# minetest_args (str):     Additional arguments to minetestserver
26#                          (default: "")
27
28. /etc/rc.subr
29
30name=minetest
31rcvar=minetest_enable
32
33load_rc_config ${name}
34
35: ${minetest_enable="NO"}
36: ${minetest_config="%%PREFIX%%/etc/minetest.conf"}
37: ${minetest_rundir="/var/run/minetest"}
38: ${minetest_user="minetest"}
39: ${minetest_group="minetest"}
40: ${minetest_logdir="/var/log/minetest"}
41: ${minetest_dbdir="/var/db/minetest"}
42: ${minetest_gameid="minetest_game"}
43: ${minetest_args=""}
44
45command=/usr/sbin/daemon
46procname=/usr/local/bin/minetestserver
47pidfile=${minetest_rundir}/minetest.pid
48command_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}"
49required_files=${minetest_config}
50start_precmd=minetest_prestart
51
52minetest_prestart () {
53	if ! ${procname} --gameid list | grep -q "."; then
54		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
55	fi
56	if [ ! -d ${minetest_rundir} ]; then
57		mkdir -m 755 -p ${minetest_rundir}
58		chown -R ${minetest_user}:${minetest_group} ${minetest_rundir}
59	fi
60	if [ ! -d ${minetest_logdir} ]; then
61		mkdir -m 755 -p ${minetest_logdir}
62		chown -R ${minetest_user}:${minetest_group} ${minetest_logdir}
63	fi
64	if [ ! -d ${minetest_dbdir} ]; then
65		mkdir -m 755 -p ${minetest_dbdir}/data
66		chown -R ${minetest_user}:${minetest_group} ${minetest_dbdir}
67	fi
68}
69
70run_rc_command "$1"
71