svchelper/install

69 lines
2.0 KiB
Plaintext
Raw Normal View History

2024-04-23 02:34:16 +00:00
#!/usr/bin/env bash
has_param() {
local term="$1"
shift
for arg; do
if [ "$arg" = "$1" ]; then
return 0
fi
done
return 1
}
if ! has_param "-f" "$@"; then
set -e
fi
INSTALL_HOME="$(realpath "$BASH_SOURCE")"
INSTALL_HOME="$(dirname "$INSTALL_HOME")"
INSTALL_APPNAME="svchelper"
INSTALL_SERVICE="$INSTALL_APPNAME"
INSTALL_SERVICE_PATH="/etc/init.d/$INSTALL_SERVICE"
INSTALL_INPUT="$INSTALL_HOME/app"
INSTALL_OUTPUT="/opt/$INSTALL_APPNAME"
INSTALL_BIN="/usr/local/bin/$INSTALL_APPNAME"
echo "Uninstalling '$INSTALL_APPNAME' ..."
if [ -e "$INSTALL_SERVICE_PATH" ]; then
service "$INSTALL_SERVICE" stop
update-rc.d "$INSTALL_SERVICE" remove
rm "$INSTALL_SERVICE_PATH"
fi
if [ -e "$INSTALL_BIN" ]; then
rm "$INSTALL_BIN"
fi
if [ -e "$INSTALL_OUTPUT" ]; then
rm -rf "$INSTALL_OUTPUT"
fi
if has_param "-u" "$@"; then
exit 0
fi
echo "Installing '$INSTALL_APPNAME' ..."
cp -r "$INSTALL_INPUT" "$INSTALL_OUTPUT"
ln -s "$INSTALL_OUTPUT/app" "$INSTALL_BIN"
echo '#!/bin/bash' >"$INSTALL_SERVICE_PATH"
echo '### BEGIN INIT INFO' >>"$INSTALL_SERVICE_PATH"
echo '# Provides: '"$INSTALL_SERVICE" >>"$INSTALL_SERVICE_PATH"
echo '# Required-Start: $all' >>"$INSTALL_SERVICE_PATH"
echo '# Required-Stop: $all' >>"$INSTALL_SERVICE_PATH"
echo '# Default-Start: 2 3 4 5' >>"$INSTALL_SERVICE_PATH"
echo '# Default-Stop: 0 6' >>"$INSTALL_SERVICE_PATH"
echo '# Short-Description: Service helper' >>"$INSTALL_SERVICE_PATH"
echo '### END INIT INFO' >>"$INSTALL_SERVICE_PATH"
echo '' >>"$INSTALL_SERVICE_PATH"
echo "exec bash \"$INSTALL_BIN\" init \"\$1\"" >>"$INSTALL_SERVICE_PATH"
chmod +x "$INSTALL_SERVICE_PATH"
update-rc.d "$INSTALL_SERVICE" defaults
source "$INSTALL_BIN" source
mkdir -p "$APP_SERVICES"
set +e
"$APP" list | while read -r SERVICE; do
"$APP" install "$SERVICE"
done
service "$INSTALL_SERVICE" start
exit 0