#!/bin/bash
#
# RedHat: /etc/rc.d/init.d/gitbucket
# Ubuntu: /etc/init.d/gitbucket
# Mac OS/X: /Library/StartupItems/GitBucket
#
# Starts the GitBucket server
#
# chkconfig: 345 60 40
# description: Run GitBucket server
# processname: java

set -e

[ -f /etc/rc.d/init.d/functions ] && source /etc/rc.d/init.d/functions  # RedHat
[ -f /etc/rc.common ] && source /etc/rc.common # Mac OS/X

# Default values
GITBUCKET_HOME=/var/lib/gitbucket
GITBUCKET_WAR_FILE=/usr/share/gitbucket/lib/gitbucket.war

# Pull in cq settings
[ -f /etc/sysconfig/gitbucket ] && source /etc/sysconfig/gitbucket # RedHat
[ -f gitbucket.conf ] && source gitbucket.conf  # For all systems

# Location of the log and PID file
LOG_FILE=$GITBUCKET_LOG_DIR/run.log
PID_FILE=/var/run/gitbucket.pid

RED='\033[1m\E[37;41m'
GREEN='\033[1m\E[37;42m'
OFF='\E[0m'

if [ -z "$(which success)" ]; then
	function success {
	  printf "%b\n" "$GREEN $* $OFF"
  }
fi
if [ -z "$(which failure)" ]; then
	function failure {
	  printf "%b\n" "$RED $* $OFF"
  }
fi

RETVAL=0

start() {
	echo -n $"Starting GitBucket server: "

  START_OPTS=
	if [ $GITBUCKET_PORT ]; then
		START_OPTS="${START_OPTS} --port=${GITBUCKET_PORT}"
	fi
	if [ $GITBUCKET_PREFIX ]; then
		START_OPTS="${START_OPTS} --prefix=${GITBUCKET_PREFIX}"
	fi
	if [ $GITBUCKET_HOST ]; then
		START_OPTS="${START_OPTS} --host=${GITBUCKET_HOST}"
	fi

	GITBUCKET_HOME="${GITBUCKET_HOME}" java $GITBUCKET_JVM_OPTS -jar $GITBUCKET_WAR_FILE $START_OPTS >>$LOG_FILE 2>&1 &
	RETVAL=$?

	echo $! > $PID_FILE

	if [ $RETVAL -eq 0 ] ; then
		success "Success"
	else
		failure "Exit code $RETVAL"
	fi

	echo
	return $RETVAL
}


stop() {
	echo -n $"Stopping GitBucket server: "

	# Run the Java process
	kill $(cat $PID_FILE 2>/dev/null) >>$LOG_FILE 2>&1
	RETVAL=$?

	if [ $RETVAL -eq 0 ] ; then
		rm -f $PID_FILE
		success "GitBucket stopping"
	else
		failure "GitBucket stopping"
	fi

	echo
	return $RETVAL
}


restart() {
	stop
	start
}

## MacOS proxies for System V service hooks:
StartService() {
	start
}

StopService() {
	stop
}

RestartService() {
	restart
}


if [ `isMac` ]; then
  RunService "$1"
else
	case "$1" in
		start)
			start
			;;
		stop)
			stop
			;;
		restart)
			restart
			;;
		status)
			status -p $PID_FILE java
			RETVAL=$?
			;;
		*)
			echo $"Usage: $0 [start|stop|restart|status]"
			RETVAL=2
	esac
  exit $RETVAL
fi

