From d09fca3ca9f40be6b4c291028418d5c95428db17 Mon Sep 17 00:00:00 2001 From: Corben Dallas Date: Wed, 31 Aug 2016 23:04:21 +0200 Subject: [PATCH] Add a (Open)SuSE init script (#3558) --- scripts/init/suse/gogs | 115 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 scripts/init/suse/gogs diff --git a/scripts/init/suse/gogs b/scripts/init/suse/gogs new file mode 100644 index 000000000..ea7dfa0a6 --- /dev/null +++ b/scripts/init/suse/gogs @@ -0,0 +1,115 @@ +#!/bin/sh +# +# /etc/init.d/gogs +# +# Runs the Gogs Go Git Service. +# + +### BEGIN INIT INFO +# Provides: gogs +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start gogs at boot time. +# Description: Control gogs. +### END INIT INFO + +# Default values + +NAME=gogs +GOGS_HOME=/home/git/gogs +GOGS_PATH=${GOGS_HOME}/$NAME +GOGS_USER=git +SERVICENAME="Go Git Service" +LOCKFILE=/var/lock/subsys/gogs +LOGPATH=${GOGS_HOME}/log +LOGFILE=${LOGPATH}/error.log +# gogs creates its own gogs.log from stdout +RETVAL=0 + +# Read configuration from /etc/sysconfig/gogs to override defaults +[ -r /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME + +# Don't do anything if nothing is installed +test -x ${GOGS_PATH} || { echo "$NAME not installed"; + if [ "$1" = "stop" ]; then exit 0; + else exit 5; fi; } + +# exit if logpath dir is not created. +test -r ${LOGPATH} || { echo "$LOGPATH not existing"; + if [ "$1" = "stop" ]; then exit 0; + else exit 6; fi; } + +# Source function library. +. /etc/rc.status + +# Reset status of this service +rc_reset + + +case "$1" in + start) + echo -n "Starting ${SERVICENAME} " + + # As we can't use startproc, we have to check ourselves if the service is already running + /sbin/checkproc ${GOGS_PATH} + if [ $? -eq 0 ]; then + # return skipped as service is already running + (exit 5) + else + su - ${GOGS_USER} -c "USER=${GOGS_USER} ${GOGS_PATH} web 2>&1 >>${LOGFILE} &" + fi + + # Remember status and be verbose + rc_status -v + ;; + + stop) + echo -n "Shutting down ${SERVICENAME} " + + ## Stop daemon with killproc(8) and if this fails + ## killproc sets the return value according to LSB. + /sbin/killproc ${GOGS_PATH} + + # Remember status and be verbose + rc_status -v + ;; + + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start + + # Remember status and be quiet + rc_status + ;; + + status) + echo -n "Checking for ${SERVICENAME} " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Return value is slightly different for the status command: + # 0 - service up and running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running (unused) + # 4 - service status unknown :-( + # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) + + # NOTE: checkproc returns LSB compliant status values. + /sbin/checkproc ${GOGS_PATH} + # NOTE: rc_status knows that we called this init script with + # "status" option and adapts its messages accordingly. + rc_status -v + ;; + + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 + ;; + +esac +rc_exit