#!/bin/bash

# omarchy:summary=Run a dnf transaction for the Omarchy update flow, shielded from desktop session teardown.
# omarchy:args=<dnf-args> | <omadora-sync-args>
# omarchy:hidden=true
# omarchy:requires-sudo=true

# Upgrading systemd runs its scriptlets mid-transaction, which reexecs both
# the system manager and every user manager. A dnf (or omadora-sync) transaction
# running inside a user-session scope can be SIGKILLed by that reexec,
# abandoning the transaction halfway. Registering the transaction as a PID 1
# scope keeps it out of the user manager's cgroups entirely, and system scopes
# survive the system manager's own reexec.
scope=()
if [[ -d /run/systemd/system && ! -L /run/systemd/system ]]; then
  scope=(systemd-run --scope --quiet --collect)
fi

# LC_ALL passes through so callers that parse dnf's stderr can pin the locale.
env_args=(OMARCHY_UPDATE_DNF=1)
if [[ -n ${LC_ALL:-} ]]; then
  env_args+=(LC_ALL="$LC_ALL")
fi

exec sudo env "${env_args[@]}" "${scope[@]}" "$@"
