#compdef systemd-run
# SPDX-License-Identifier: LGPL-2.1-or-later

# @todo _systemctl has a helper with the same name, so we must redefine
__systemctl() {
    local -a _modes
    _modes=("--user" "--system")
    systemctl ${words:*_modes} --full --no-legend --no-pager --plain "$@" 2>/dev/null
}

(( $+functions[__systemd-run_get_slices] )) ||
    __systemd-run_get_slices () {
        __systemctl list-units --all -t slice \
            | { while read -r a b; do echo $a; done; };
    }

(( $+functions[__systemd-run_slices] )) ||
    __systemd-run_slices () {
        local -a _slices
        _slices=(${(fo)"$(__systemd-run_get_slices)"})
        typeset -U _slices
        _describe 'slices' _slices
    }

_arguments \
    {-G,--collect}'[Unload the transient unit after it completed]' \
    '--description=[Description for unit]:description' \
    '--gid=[Run as system group]:group:_groups' \
    {-h,--help}'[Show help message]' \
    {-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \
    {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \
    '--nice=[Nice level]:nice level' \
    '--no-ask-password[Do not query the user for authentication]' \
    '--no-block[Do not synchronously wait for the unit start operation to finish]' \
    '--on-active=[Run after SEC seconds]:SEC' \
    '--on-boot=[Run SEC seconds after machine was booted up]:SEC' \
    '--on-calendar=[Realtime timer]:SPEC' \
    '--on-clock-change[Defines a trigger based on system clock jumps]' \
    '--on-startup=[Run SEC seconds after systemd was first started]:SEC' \
    '--on-timezone-change[Defines a trigger based on system timezone changes]' \
    '--on-unit-active=[Run SEC seconds after the last activation]:SEC' \
    '--on-unit-inactive=[Run SEC seconds after the last deactivation]:SEC' \
    '--path-property=[Set path unit property]:NAME=VALUE' \
    {-P,--pipe}'[Inherit standard input, output, and error]' \
    {-p+,--property=}'[Set unit property]:NAME=VALUE:(( \
                CPUAccounting= MemoryAccounting= BlockIOAccounting= SendSIGHUP= \
                SendSIGKILL= MemoryLimit= CPUShares= BlockIOWeight= User= Group= \
                DevicePolicy= KillMode= DeviceAllow= BlockIOReadBandwidth= \
                BlockIOWriteBandwidth= BlockIODeviceWeight= Nice= Environment= \
                KillSignal= RestartKillSignal= FinalKillSignal= LimitCPU= LimitFSIZE= LimitDATA= \
                LimitSTACK= LimitCORE= LimitRSS= LimitNOFILE= LimitAS= LimitNPROC= \
                LimitMEMLOCK= LimitLOCKS= LimitSIGPENDING= LimitMSGQUEUE= \
                LimitNICE= LimitRTPRIO= LimitRTTIME= PrivateTmp= PrivateDevices= \
                PrivateNetwork= NoNewPrivileges= WorkingDirectory= RootDirectory= \
                TTYPath= SyslogIdentifier= SyslogLevelPrefix= SyslogLevel= \
                SyslogFacility= TimerSlackNSec= OOMScoreAdjust= ReadWritePaths= \
                ReadOnlyPaths= InaccessiblePaths= EnvironmentFile= \
                ProtectSystem= ProtectHome= RuntimeDirectory= PassEnvironment= \
                ))' \
    {-t,--pty}'[The service connects to the terminal]' \
    {-q,--quiet}'[Suppresses additional informational output]' \
    {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \
    {-d,--same-dir}'[Run on the current working directory]' \
    '--scope[Run this as scope rather than service]' \
    '--send-sighup[Send SIGHUP when terminating]' \
    '--service-type=[Service type]:type:(simple forking oneshot dbus notify idle)' \
    {-E+,--setenv=}'[Set environment]:NAME=VALUE' \
    {-S,--shell}'[requests an interactive shell in the current working directory]' \
    '--slice=[Run in the specified slice]:slices:__systemd-run_slices' \
    '--slice-inherit[Run in the inherited slice]' \
    '--socket-property=[Set socket unit property]:NAME=VALUE' \
    '--system[Run as system unit]' \
    '--timer-property=[Set timer unit property]:NAME=VALUE' \
    '--uid=[Run as system user]:user:_users' \
    {-u+,--unit=}'[Run under the specified unit name]:unit name' \
    '--user[Run as user unit]' \
    '--version[Show package version]' \
    '--wait=[Wait until service stopped again]' \
    '--working-directory=[Run with the specified working directory]' \
    '(-):command: _command_names -e' \
    '*::arguments:_normal'
