#!/bin/sh

# PROVIDE: forgejo
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable forgejo:
#
#forgejo_enable="YES"

. /etc/rc.subr

name="forgejo"
rcvar="forgejo_enable"

load_rc_config $name

: ${forgejo_user:="git"}
: ${forgejo_enable:="NO"}
: ${forgejo_configcheck_enable:="YES"}
: ${forgejo_facility:="daemon"}
: ${forgejo_priority:="info"}
: ${forgejo_custom:="/usr/local/etc/${name}"}

command="/usr/local/sbin/${name} web"
procname="/usr/local/sbin/${name}"
githome="$(eval echo ~${forgejo_user})"

pidfile="/var/run/${name}.pid"

start_cmd="${name}_start"
start_precmd="${name}_prestart"

forgejo_start() {
	for d in /var/db/forgejo /var/log/forgejo; do
		if [ ! -e "$d" ]; then
			mkdir "$d"
			chown ${forgejo_user} "$d"
		fi
	done
	/usr/sbin/daemon -S -l ${forgejo_facility} -s ${forgejo_priority} -T  ${name} \
		-u ${forgejo_user} -p ${pidfile} \
		/usr/bin/env -i \
		"FORGEJO_CUSTOM=${forgejo_custom}" \
		"HOME=${githome}" \
		"PATH=/usr/local/bin:${PATH}" \
		"USER=${forgejo_user}" \
		$command
}

forgejo_prestart() {
	if checkyesno forgejo_configcheck_enable; then
		if ! errstr=$(/usr/bin/env -i \
		    "FORGEJO_CUSTOM=${forgejo_custom}" \
		    "HOME=${githome}" \
		    "PATH=/usr/local/bin:${PATH}" \
		    "USER=${forgejo_user}" \
		    /usr/bin/su -m ${forgejo_user} -c \
		    "/usr/local/sbin/${name} doctor check" 2>&1); then
			rc=$?
			echo "$errstr" >&2
			return $rc
		fi
	fi
}

run_rc_command "$1"
