#!/bin/bash

umask 0022

cli_defaults=${INSTALL_DIR}/cli/cli-defaults.sh
rundir=/run/puppetserver

CLASSPATH=${INSTALL_DIR}/puppetserver.jar

USER=puppet
GROUP=puppet

if [ -e "$cli_defaults" ]; then
  . $cli_defaults
  if [ $? -ne 0 ]; then
    echo "Unable to initialize cli defaults, failing foreground subcommand." 1>&2
    exit 1
  fi
fi

if ! (echo "${@}" | grep -e "--debug" -q)
then
    LOG_APPENDER="-Dlogappender=STDOUT"
fi

/usr/bin/install --directory --owner=$USER --group=$GROUP --mode=755 "${rundir}"
if [ $? -ne 0 ]; then
    echo "Unable to create/set permissions for rundir: ${rundir}" 1>&2
    exit 1
fi

COMMAND="/usr/bin/java $JAVA_ARGS $LOG_APPENDER \
    -Djruby.lib=/usr/share/jruby/lib \
    -XX:+CrashOnOutOfMemoryError \
    -XX:ErrorFile="/var/log/puppetserver/puppetserver_err_pid%%p.log" \
    -jar ${INSTALL_DIR}/puppetserver.jar \
    --config /etc/puppet/puppetserver/conf.d \
    --bootstrap-config /etc/puppet/puppetserver/services.d \
    $TK_ARGS \
	${@}"

pushd "${INSTALL_DIR}" &> /dev/null
if [ "$EUID" = "0" ] && command -v runuser &> /dev/null; then
  runuser "${USER}" -s /bin/bash -c "$COMMAND"
elif [ "$EUID" = "$(id -u ${USER})" ]; then
  /bin/bash -c "$COMMAND"
elif command -v sudo &> /dev/null; then
  sudo -H -u "${USER}" $COMMAND
else
  su "${USER}" -s /bin/bash -c "$COMMAND"
fi
popd &> /dev/null
