summaryrefslogtreecommitdiff
path: root/shell-completion/zsh/_systemd-coredumpctl
blob: 159e8ee0e206146ff47f05ce906ddb876cc251cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#compdef systemd-coredumpctl

_systemd-coredumpctl_command(){
    local -a _systemd_coredumpctl_cmds
    _systemd_coredumpctl_cmds=(
            'list:List available coredumps'
            'dump:Print coredump to stdout'
            'gdb:Start gdb on a coredump'
    )
    if (( CURRENT == 1 )); then
        _describe -t commands 'systemd-coredumpctl command' _systemd_coredumpctl_cmds
    else
        local curcontext="$curcontext"
        local -a _dumps
        cmd="${${_systemd_coredumpctl_cmds[(r)$words[1]:*]%%:*}}"
        if (( $#cmd  )); then
			# user can set zstyle ':completion:*:*:systemd-coredumpctl:*' sort no for coredumps to be ordered by date, otherwise they get ordered by pid
			_dumps=( "${(foa)$(systemd-coredumpctl list | awk 'BEGIN{OFS=":"} /^\s/ {sub(/[[ \t]+/, ""); print $5,$0}' 2>/dev/null)}" )
            if [[ -n "$_dumps" ]]; then
                _describe -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' \
    '--no-pager[Do not pipe output into a pager]' \
    {-h,--help}'[Show this help]' \
    '--version[Show package version]' \
    '*::systemd-coredumpctl commands:_systemd-coredumpctl_command'