#!/usr/bin/env bash set -euo pipefail CONFIG_FILE="${1:-/etc/relaydock/config.json}" PREFIX="${RELAYDOCK_PREFIX:-relaydock}" command -v jq >/dev/null 2>&1 || { echo "Fehlt: jq" >&2; exit 1; } [[ -f "$CONFIG_FILE" ]] || { echo "Config fehlt: $CONFIG_FILE" >&2; exit 1; } mapfile -t desired < <(jq -r '.rules[].name' "$CONFIG_FILE" | sort -u) mapfile -t current < <(systemctl list-units --full --all "${PREFIX}@*.service" --no-legend | awk '{print $1}' | sed -E "s/^${PREFIX}@(.*)\\.service$/\\1/" | sort -u) for name in "${desired[@]}"; do systemctl enable --now "${PREFIX}@${name}.service" done for name in "${current[@]}"; do if ! printf '%s\n' "${desired[@]}" | grep -qx "$name"; then systemctl disable --now "${PREFIX}@${name}.service" || true else systemctl restart "${PREFIX}@${name}.service" fi done