summaryrefslogtreecommitdiff
path: root/completions/iperf
blob: 43f9bcaf7c92d3645a2f92495345cbb7e8234b04 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# iperf(1) completion                                      -*- shell-script -*-

_iperf()
{
    local cur prev words cword split
    _init_completion -s -n : || return

    case $prev in
        --help|--version|--interval|--len|--port|--window|--mss|--bandwidth|\
        --num|--time|--listenport|--parallel|--ttl|--linux-congestion|--omit|\
        --congestion|--bytes|--blockcount|--cport|--set-mss|--flowlabel|\
        --title|--tos|--affinity|-!(-*)[hvilpwMbntLPTZCkOSA])
            return
            ;;
        --format|-!(-*)f)
            COMPREPLY=( $(compgen -W 'k m g K M G' -- "$cur") )
            return
            ;;
        --output|--fileinput|-!(-*)[oF])
            _filedir
            return
            ;;
        --bind|-!(-*)B)
            _available_interfaces -a
            _ip_addresses -a
            __ltrim_colon_completions "$cur"
            return
            ;;
        --client|-!(-*)c)
            _known_hosts_real -- "$cur"
            return
            ;;
        --reportexclude|-!(-*)x)
            COMPREPLY=( $(compgen -W 'C D M S V' -- "$cur") )
            return
            ;;
        --reportstyle|-!(-*)y)
            COMPREPLY=( $(compgen -W 'C' -- "$cur") )
            return
            ;;
        --logfile)
            _filedir log
            return
            ;;
    esac

    $split && return

    # Filter mode specific options
    local i filter=cat
    for i in "${words[@]}"; do
        case $i in
            -s|--server)
                filter='command sed -e /^Client.specific/,/^\(Server.specific.*\)\?$/d'
                ;;
            -c|--client)
                filter='command sed -e /^Server.specific/,/^\(Client.specific.*\)\?$/d'
                ;;
        esac
    done
    [[ $filter != cat ]] && filter+=' -e /--client/d -e /--server/d'

    COMPREPLY=( $(compgen -W \
        '$("$1" --help 2>&1 | $filter | _parse_help -)' -- "$cur") )
    [[ $COMPREPLY == *= ]] && compopt -o nospace
} &&
complete -F _iperf iperf iperf3

# ex: filetype=sh