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

(( $+functions[_systemd-inhibit_commands] )) ||
_systemd-inhibit_commands(){
    if (( CURRENT == 1 )); then
        compset -q
        _normal
    else
        local n=${words[(b:2:i)[^-]*]}
        if (( n <= CURRENT )); then
            compset -n $n
            _alternative \
                'files:file:_files' \
                'commands:command:_normal' && return 0
        fi
        _default
    fi
}

(( $+functions[_systemd-inhibit_what] )) ||
_systemd-inhibit_what() {
    local _inhibit
    _inhibit=(shutdown sleep idle handle-power-key handle-suspend-key handle-hibernate-key handle-lid-switch)
    _values -s : "${_inhibit[@]}"
}

_arguments \
    '(- *)'{-h,--help}'[Show this help]' \
    '(- *)--version[Show package version]' \
    '--no-pager[Do not pipe output into a pager]' \
    '--no-legend[Do not show the headers and footers]' \
    '--what=[Operations to inhibit]:options:_systemd-inhibit_what' \
    '--who=[A descriptive string who is inhibiting]:who is inhibiting:' \
    '--why=[A descriptive string why is being inhibited]:reason for the lock:' \
    '--mode=[One of block, block-weak, or delay]:lock mode:( block block-weak delay )' \
    '--list[List active inhibitors]' \
    '*:commands:_systemd-inhibit_commands'
