#!/usr/bin/openrc-run

depend() {
    need net
    use dns logger mysql postgresql
}

checkconfig() {
    if [ ! -n "$JENKINS_HOME" ] ; then
        eerror "JENKINS_HOME not configured"
        return 1
    fi
    if [ ! -d "$JENKINS_HOME" ] ; then
        checkpath -q -d -o jenkins:jenkins -m 0755 "$JENKINS_HOME" || return 1
    fi
    return 0
}

start() {
    checkconfig || return 1

    JAVA_PARAMS="$JAVA_ARGS $JAVA_OPTS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"

    # Don't use --daemon here, because in this case stop will not work
    PARAMS="--logfile=/var/log/jenkins/jenkins.log"
    [ -n "$JENKINS_WEBROOT" ] && PARAMS="$PARAMS --webroot=$JENKINS_WEBROOT"
    [ -n "$JENKINS_PORT" ] && PARAMS="$PARAMS --httpPort=$JENKINS_PORT"
    [ -n "$JENKINS_AJPPORT" ] && PARAMS="$PARAMS --ajp13Port=$JENKINS_AJPPORT"
    [ -n "$JENKINS_DEBUG_LEVEL" ] && PARAMS="$PARAMS --debug=$JENKINS_DEBUG_LEVEL"
    [ -n "$JENKINS_HANDLER_STARTUP" ] && PARAMS="$PARAMS --handlerCountStartup=$JENKINS_HANDLER_STARTUP"
    [ -n "$JENKINS_HANDLER_MAX" ] && PARAMS="$PARAMS --handlerCountMax=$JENKINS_HANDLER_MAX"
    [ -n "$JENKINS_HANDLER_IDLE" ] && PARAMS="$PARAMS --handlerCountMaxIdle=$JENKINS_HANDLER_IDLE"
    [ -n "$JENKINS_ARGS" ] && PARAMS="$PARAMS $JENKINS_ARGS"

    if [ "$JENKINS_ENABLE_ACCESS_LOG" = "yes" ]; then
        PARAMS="$PARAMS --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log"
    fi

    ebegin "Starting ${SVCNAME}"
    start-stop-daemon --start --quiet --background \
        --make-pidfile --pidfile $JENKINS_PIDFILE \
        --user $JENKINS_USER \
        --exec "$JAVA" -- $JAVA_PARAMS $PARAMS
    eend $?
}

stop() {
    ebegin "Stopping ${SVCNAME}"
    start-stop-daemon --stop --quiet --pidfile $JENKINS_PIDFILE
    eend $?
}
