#!/bin/sh
### BEGIN INIT INFO
# Provides:          gitea
# Required-Start:    $syslog $network
# Required-Stop:     $syslog
# Should-Start:      mysql postgresql
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description  gitea daemon
# Description:       A self-hosted Git service written in Go.
### END INIT INFO

# Author: PICCORO Lenz McKAY <mckaygerhard@gmail.com>

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
DESC="Gitea VenenuX"
NAME=gitea
SERVICEVERBOSE=yes
PIDFILE=/run/gitea/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WORKINGDIR=/var/lib/$NAME
DAEMON=/usr/lib/$NAME/$NAME
DAEMON_ARGS=" web"
USER=gitea
GITEA_ENABLE=true
USERBIND=""
# If you want to bind Gitea to a port below 1024 uncomment
# the line below
USERBIND="setcap cap_net_bind_service=+ep"
STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/1/KILL/5}"

# Read configuration variable file if it is present, by default its not necesary, no much options to parse
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
[ -f /lib/lsb/init-functions ] && . /lib/lsb/init-functions

mkdir -p /var/log/gitea
chown -R $USER:$USER /var/log/gitea > /dev/null
mkdir -p $WORKINGDIR/certs > /dev/null
mkdir -p $WORKINGDIR/datas > /dev/null
mkdir -p $WORKINGDIR/tmp > /dev/null
mkdir -p $WORKINGDIR/indexers > /dev/null
chown -R $USER:www-data $WORKINGDIR > /dev/null


# Function that starts the daemon/service
do_start()
{
	export GITEA_WORK_DIR="$WORKINGDIR"
	$USERBIND $DAEMON
    sh -c "USER=$USER HOME=/var/lib/$USER GITEA_WORK_DIR=$WORKINGDIR start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\
        --background --chdir $WORKINGDIR --chuid $USER \\
        --exec $DAEMON -- $DAEMON_ARGS"
}

# Function that stops the daemon/service
do_stop()
{
    start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PIDFILE --name $NAME --oknodo
    rm -f $PIDFILE
}

do_status()
{
    if [ -f $PIDFILE ]; then
        if kill -0 $(cat "$PIDFILE"); then
            echo "$NAME is running, PID is $(cat $PIDFILE)"
        else
            echo "$NAME process is dead, but pidfile exists"
        fi
    else
        echo "$NAME is not running"
    fi
}

case "$1" in
    start)
        echo "Starting $DESC" "$NAME"
        do_start
        ;;
    stop)
        echo "Stopping $DESC" "$NAME"
        do_stop
        ;;
    status)
        do_status
        ;;
    restart)
        echo "Restarting $DESC" "$NAME"
        do_stop
        do_start
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
        exit 2
        ;;
esac

exit 0
