67 lines
1.5 KiB
Bash
Executable File
67 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ ${EUID:-0} -ne 0 ]]; then
|
|
echo "This script must run as root." >&2
|
|
exit 1
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
UNIT_NAME="uce.service"
|
|
UNIT_SOURCE="$SCRIPT_DIR/uce.service"
|
|
if [[ ( "$REPO_ROOT" == "/usr/lib/uce" || "$REPO_ROOT" == "/opt/uce" ) && -f "$REPO_ROOT/scripts/deb/uce.service" ]]; then
|
|
UNIT_SOURCE="$REPO_ROOT/scripts/deb/uce.service"
|
|
fi
|
|
UNIT_DEST="/etc/systemd/system/$UNIT_NAME"
|
|
CONFIG_SOURCE="$REPO_ROOT/etc/uce/settings.cfg"
|
|
CONFIG_DEST="/etc/uce/settings.cfg"
|
|
|
|
action="${1:-setup}"
|
|
|
|
render_runtime_file() {
|
|
local source="$1"
|
|
local destination="$2"
|
|
local mode="$3"
|
|
local tmp
|
|
tmp="$(mktemp)"
|
|
trap 'rm -f "$tmp"' RETURN
|
|
sed "s#/Code/uce.openfu.com/uce#$REPO_ROOT#g" "$source" > "$tmp"
|
|
install -D -m "$mode" "$tmp" "$destination"
|
|
rm -f "$tmp"
|
|
trap - RETURN
|
|
}
|
|
|
|
install_unit() {
|
|
render_runtime_file "$UNIT_SOURCE" "$UNIT_DEST" 0644
|
|
if [[ ! -f "$CONFIG_DEST" ]]; then
|
|
render_runtime_file "$CONFIG_SOURCE" "$CONFIG_DEST" 0644
|
|
fi
|
|
systemctl daemon-reload
|
|
}
|
|
|
|
case "$action" in
|
|
install)
|
|
install_unit
|
|
;;
|
|
setup)
|
|
install_unit
|
|
systemctl enable --now "$UNIT_NAME"
|
|
;;
|
|
enable)
|
|
install_unit
|
|
systemctl enable "$UNIT_NAME"
|
|
;;
|
|
start|stop|restart|status)
|
|
systemctl "$action" "$UNIT_NAME"
|
|
;;
|
|
logs)
|
|
lines="${2:-100}"
|
|
journalctl -u "$UNIT_NAME" -n "$lines" --no-pager
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [install|setup|enable|start|stop|restart|status|logs [lines]]" >&2
|
|
exit 1
|
|
;;
|
|
esac
|