#!/bin/sh
#
# PROVIDE: homebrewery
# REQUIRE: NETWORKING
# KEYWORD: shutdown

# Author: S Robertson
# Version: 1.0.0

# Description:
#    This script runs HomeBrewery as a service under the supplied user on boot

# How to use:
#    Place this file in /usr/local/etc/rc.d/
#    Add homebrewery_enable="YES" to /etc/rc.config
#    (Optional) To run as non-root, add homebrewery_runAs="homebrewery" to /etc/rc.config
#    (Optional) To pass HomeBrewery args, add homebrewery_args="" to /etc/rc.config

# Freebsd rc library
. /etc/rc.subr

# General Info
name="homebrewery"            # Safe name of program
location="/usr/local/"	      # Install location
program_name="homebrewery"    # Name of exec
title="HomeBrewery"           # Title to display in top/htop

# RC.config vars
load_rc_config $name      # Loading rc config vars
: ${homebrewery_enable="NO"}  # Default: Do not enable HomeBrewery
: ${homebrewery_runAs="root"} # Default: Run HomeBrewery as root
: ${homebrewery_port=8000}    # Default: Run HomeBrewery on port 8000
: ${homebrewery_NODE_ENV="local"}  # Default: Run HomeBrewery in local mode

# Freebsd Setup
rcvar=homebrewery_enable                   # Enables the rc.conf YES/NO flag
pidfile="/var/run/${program_name}.pid" 	   # File that allows the system to keep track of HomeBrewery status

# Env Setup
export HOME=$( getent passwd "homebrewery_runAs" | cut -d: -f6 ) # Gets the home directory of the runAs user
export NODE_ENV=${homebrewery_NODE_ENV}
export PORT=${homebrewery_port}

# Command Setup
exec_cmd="${location}/${program_name}/server.js" 	# Path to the HomeBrewery server.js, /usr/local/bin/ when installed globally
output_file="/var/log/${program_name}.log" 		# Path to HomeBrewery output file

# Command
command="/usr/sbin/daemon"
command_args="-r -t ${title} -u ${homebrewery_runAs} -o ${output_file} -P ${pidfile} /usr/local/bin/node ${exec_cmd} ${homebrewery_args}"

# Extra Commands
extra_commands="dev_mode"

dev_mode_cmd="homebrewery_dev_mode"

homebrewery_dev_mode() {
echo "Starting HomeBrewery in live rebuild Developer mode..."
cd ${location}/${program_name}/
/usr/local/bin/node ${location}/${program_name}/scripts/buildHomebrew.js --dev
}

# Loading Config
load_rc_config ${name}
run_rc_command "$1"
