#!/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