#!/bin/sh
# $FreeBSD: branches/2018Q4/net/kafka/files/kafka.in 480956 2018-09-30 14:37:04Z pi $
#
# PROVIDE: kafka
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add kafka_enable="YES" to /etc/rc.conf to enable Kafka:
#
# Additional variables you can define are:
#
# kafka_user:		Username to run Kafka
#			Default: kafka
# kafka_group:		Groupname to run Kafka
#			Default: kafka
# kafka_config:		Configuration file to run Kafka
#			Default: /usr/local/etc/kafka/server.properties
# kafka_log4j_profile:	Profile for Kafka logging
#			Default: /usr/local/etc/kafka/log4j.properties
# kafka_log_dir:	Directory to store Kafka logs
#			Default: /var/log/kafka
# kafka_java_opts:	Options passed to JVM to start Kafka
#			Default: None
# kafka_pid_file:	Full path of the Kafka process PID file
#			Default: /var/run/kafka/kafka.pid
# kafka_out_file:	Filename to store Kafka's stdout and stderr
#			Default: kafkaServer.out

. /etc/rc.subr

name=kafka
rcvar=kafka_enable

load_rc_config "${name}"

: ${kafka_enable:=NO}
: ${kafka_user:=kafka}
: ${kafka_group:=kafka}
: ${kafka_config:=/usr/local/etc/kafka/server.properties}
: ${kafka_log4j_profile:=/usr/local/etc/kafka/log4j.properties}
: ${kafka_log_dir:=/var/log/kafka}
: ${kafka_java_opts:=}
: ${kafka_pid_file:=/var/run/kafka/kafka.pid}
: ${kafka_out_file:=kafkaServer.out}

JAVA=/usr/local/openjdk8/bin/java

CLASSPATH=":/usr/local/share/java/kafka/libs/*"

kafka_log_opts="-Dkafka.logs.dir=${kafka_log_dir} -Dlog4j.configuration=file:${kafka_log4j_profile}"
kafka_main="$kafka_java_opts $kafka_log_opts -cp $CLASSPATH"
pidfile=${kafka_pid_file}
procname=${JAVA}
required_files="${kafka_config} ${kafka_log4j_profile}"

daemon_head="-f"
daemon_tail=""

if [ -n "$kafka_out_file" ]; then
	daemon_head=""
	daemon_tail=" > ${kafka_log_dir}/${kafka_out_file} 2>&1 < /dev/null"
	[ -d "$kafka_log_dir" ] || mkdir -p "$kafka_log_dir"
	[ -f "${kafka_log_dir}/${kafka_out_file}" ] || touch "${kafka_log_dir}/${kafka_out_file}"
fi

command="/usr/sbin/daemon"
command_args="${daemon_head} -p ${pidfile} ${JAVA} ${kafka_main} kafka.Kafka ${kafka_config} ${daemon_tail}"

start_precmd="kafka_init"

kafka_init()
{
	chown ${kafka_user}:${kafka_group} ${pidfile%/*} ${kafka_log_dir} ${kafka_log_dir}/${kafka_out_file} ${kafka_config} ${kafka_log4j_profile}
}

run_rc_command "$1"
