Packages

Elixir lib for creating Debian packages with Mix Release.

Current section

Files

Jump to
pkg_deb templates init_scripts sysvinit.eex
Raw

templates/init_scripts/sysvinit.eex

#!/bin/bash
### BEGIN INIT INFO
# Provides: <%= name %>
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: <%= description %>
# Description: <%= description %>
### END INIT INFO
# Documentation available at
# http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
# Debian provides some extra functions though
. /lib/lsb/init-functions
DAEMON_NAME=<%= name %>
DAEMON_USER=<%= uid %>
DAEMON_PATH=<%= base_path %>/<%= name %>/bin/<%= name %>
DAEMON_DESC=$(get_lsb_header_val $0 "Short-Description")
DAEMON_NICE=0
do_start() {
local result
local status
status=($(su - $DAEMON_USER $DAEMON_PATH ping))
if [ "${status[0]}" = "pong" ]; then
log_warning_msg "${DAEMON_NAME} is already started"
result=1
else
log_success_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"
su - $DAEMON_USER $DAEMON_PATH start > /dev/null
result=0
fi
return $result
}
do_stop() {
local result
local status
status=($(su - $DAEMON_USER $DAEMON_PATH ping))
if [ "${status[0]}" = "pong" ]; then
log_success_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"
su - $DAEMON_USER $DAEMON_PATH stop > /dev/null
result=0
else
log_failure_msg "${DAEMON_NAME} is not started"
result=1
fi
return $result
}
do_restart() {
local result
do_stop
result=$?
if [ "$result" = 0 ]; then
do_start
result=$?
fi
return $result
}
do_status() {
local result
local status
status=($(su - $DAEMON_USER $DAEMON_PATH ping))
if [ "${status[0]}" = "pong" ]; then
log_success_msg "${DAEMON_DESC}" "${DAEMON_NAME} is running"
result=0
else
log_failure_msg "${DAEMON_NAME} is not running"
result=1
fi
return $result
}
do_usage() {
echo $"Usage: $0 {start | stop | restart | status}"
exit 1
}
case "$1" in
start) do_start; exit $? ;;
stop) do_stop; exit $? ;;
restart) do_restart; exit $? ;;
force-reload) do_restart; exit $? ;;
status) do_status; exit $? ;;
*) do_usage; exit 1 ;;
esac