diff options
Diffstat (limited to 'completions/iperf')
-rw-r--r-- | completions/iperf | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/completions/iperf b/completions/iperf new file mode 100644 index 0000000..6347fe0 --- /dev/null +++ b/completions/iperf @@ -0,0 +1,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 |