#!/bin/sh

# PROVIDE: minio
# KEYWORD: shutdown

#
# Add the following lines to /etc/rc.conf to enable minio:
#
# minio_enable (bool):          Set to "NO" by default.
#                               Set it to "YES" to enable minio
# minio_config (path):          Set to "/usr/local/etc/minio" by default
#                               Set to directory to store minio config
# minio_certs (path):           Set to "/var/tmp/minio" by default
#                               Set to directory to certs dir
# minio_disks (path):           Set to "/var/db/minio" by default.
#                               Set it to directory to store minio data
# minio_address (str):          Set to ":9000" by default.
#                               Set it to address for minio to listen on
# minio_user (str):             Set to "minio" by default.
#                               Set it to user to run minio under
# minio_group (str):            Set to "minio" by default.
#                               Set it to group to run minio under
# minio_logfile (str):          Set to "/var/log/minio.log" by default.
#                               Set it to file where stdout/stderr are logged.
#

. /etc/rc.subr

name=minio
rcvar=minio_enable

load_rc_config ${name}

: ${minio_enable:="NO"}
: ${minio_config="/usr/local/etc/minio"}
: ${minio_certs="/var/tmp/minio"}
: ${minio_disks="/var/db/minio"}
: ${minio_address=":9000"}
: ${minio_user:="minio"}
: ${minio_group:="minio"}
: ${minio_logfile:="/var/log/minio.log"}

pidfile="/var/run/${name}.pid"
procname="/usr/local/bin/minio"
command="/usr/sbin/daemon"
command_args="-c -p ${pidfile} /usr/bin/env ${minio_env} ${procname} -C \"${minio_config}\" -S \"${minio_certs}\" server --address=\"${minio_address}\" --quiet ${minio_disks} < /dev/null > ${minio_logfile} 2>&1"

start_precmd="minio_startprecmd"

minio_startprecmd()
{
	if [ ! -e "${pidfile}" ]; then
		install -o "${minio_user}" -g "${minio_group}" "/dev/null" "${pidfile}"
	fi

	if [ ! -d "${minio_config}" ]; then
		install -d -o "${minio_user}" -g "${minio_group}" "${minio_config}"
	fi

        if [ ! -e "${minio_logfile}" ]; then
                install -o "${minio_user}" -g "${minio_group}" "/dev/null" "${minio_logfile}"
        fi

	if [ -d "${minio_config}" -a "$(stat -f '%p' "${minio_config}")" != "40775" ]; then
		chmod 775 "${minio_config}"
	fi

	for disk in "${minio_disks}"; do
		if [ ! -d "${disk}" ]; then
			install -d -o "${minio_user}" -g "${minio_group}" "${disk}"
		fi
	done
}

run_rc_command "$1"
