#!/bin/sh
set -eu

SERVICE_NAME="codex-update-manager.service"

for runtime_dir in /run/user/*; do
    [ -d "$runtime_dir" ] || continue

    uid="$(basename "$runtime_dir")"
    case "$uid" in
        ''|*[!0-9]*|0)
            continue
            ;;
    esac

    bus="$runtime_dir/bus"
    [ -S "$bus" ] || continue

    user_name="$(getent passwd "$uid" | cut -d: -f1 || true)"
    [ -n "$user_name" ] || continue

    runuser -u "$user_name" -- env \
        XDG_RUNTIME_DIR="$runtime_dir" \
        DBUS_SESSION_BUS_ADDRESS="unix:path=$bus" \
        systemctl --user stop "$SERVICE_NAME" >/dev/null 2>&1 || true

    case "${1:-}" in
        remove|purge|deconfigure)
            runuser -u "$user_name" -- env \
                XDG_RUNTIME_DIR="$runtime_dir" \
                DBUS_SESSION_BUS_ADDRESS="unix:path=$bus" \
                systemctl --user disable "$SERVICE_NAME" >/dev/null 2>&1 || true
            ;;
    esac

    runuser -u "$user_name" -- env \
        XDG_RUNTIME_DIR="$runtime_dir" \
        DBUS_SESSION_BUS_ADDRESS="unix:path=$bus" \
        systemctl --user daemon-reload >/dev/null 2>&1 || true
done

exit 0
