#compdef coredumpctl
# SPDX-License-Identifier: LGPL-2.1-or-later

(( $+functions[_coredumpctl_commands] )) ||
_coredumpctl_commands(){
    local -a _coredumpctl_cmds
    _coredumpctl_cmds=(
        'list:List available coredumps'
        'info:Show detailed information about one or more coredumps'
        'dump:Print coredump to stdout'
        'debug:Start debugger (gdb) on a coredump'
    )
    if (( CURRENT == 1 )); then
        _describe -t commands 'coredumpctl command' _coredumpctl_cmds
    else
        local curcontext="$curcontext"
        local -a _dumps
        cmd="${${_coredumpctl_cmds[(r)$words[1]:*]%%:*}}"
        if (( $#cmd  )); then
            _dumps=( "${(f)$(coredumpctl list -q --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $4,$0}' 2>/dev/null)}" )
            if [[ -n "$_dumps" ]]; then
                _describe -V -t pids 'coredumps' _dumps
            else
                _message "no coredumps"
            fi
        else
            _message "no more options"
        fi
    fi
}

_arguments \
    {-o+,--output=}'[Write output to FILE]:output file:_files' \
    {-F+,--field=}'[Show field in list output]:field' \
    '-1[Show information about most recent entry only]' \
    {-S,--since}'[Print entries since the specified date]' \
    {-U,--until}'[Print entries until the specified date]' \
    {-r,--reverse}'[Show the newest entries first]' \
    '--no-pager[Do not pipe output into a pager]' \
    '--no-legend[Do not print the column headers]' \
    {-h,--help}'[Show this help]' \
    '--version[Show package version]' \
    '--debugger=[Use the given debugger]:debugger: _command_names -e' \
    {-D,--directory=}'[Use the journal files in the specified dir]:directory: _directories' \
    {-q,--quiet}'[Do not show info messages and privilege warning]' \
    '*::coredumpctl commands:_coredumpctl_commands'
