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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
# curl(1) completion -*- shell-script -*-
_comp_cmd_curl()
{
local cur prev words cword comp_args
_comp_initialize -n : -- "$@" || return
local noargopts='!(-*|*[KbcDoTCFmQreYytzuAwEdHPxX]*)'
# shellcheck disable=SC2254
case $prev in
--abstract-unix-socket | --alt-svc | --config | --cookie | \
--cookie-jar | --dump-header | --egd-file | --etag-compare | \
--etag-save | --hsts | --key | --libcurl | --netrc-file | \
--output | --proxy-key | --random-file | --unix-socket | \
--upload-file | -${noargopts}[KbcDoT])
_comp_compgen_filedir
return
;;
--ciphers | --connect-timeout | --connect-to | --continue-at | \
--curves | --data-raw | --doh-url | --expect100-timeout | --form | \
--form-string | --ftp-account | --ftp-alternative-to-user | \
--happy-eyeballs-timeout-ms | --hostpubmd5 | --keepalive-time | \
--limit-rate | --local-port | --login-options | --mail-auth | \
--mail-from | --mail-rcpt | --max-filesize | --max-redirs | \
--max-time | --pass | --proto | --proto-redir | \
--proxy-ciphers | --proxy-pass | --proxy-service-name | \
--proxy-tls13-ciphers | --proxy-tlspassword | --proxy-tlsuser | \
--proxy-user | --proxy1.0 | --quote | --range | --referer | \
--resolve | --retry | --retry-delay | --retry-max-time | \
--sasl-authzid | --service-name | --socks5-gssapi-service | \
--speed-limit | --speed-time | --telnet-option | --tftp-blksize | \
--time-cond | --tls13-ciphers | --tlspassword | --tlsuser | \
--url | --user | --user-agent | --version | \
-${noargopts}[CFmQreYytzuAV])
return
;;
--cacert | --cert | --proxy-cacert | --proxy-cert | -${noargopts}E)
_comp_compgen_filedir '@(c?(e)rt|cer|pem|der)'
return
;;
--capath | --output-dir | --proxy-capath)
_comp_compgen_filedir -d
return
;;
--cert-type | --key-type | --proxy-cert-type | --proxy-key-type)
_comp_compgen -- -W 'DER PEM ENG'
return
;;
--crlfile | --proxy-crlfile)
_comp_compgen_filedir crl
return
;;
--data | --data-ascii | --data-binary | --data-urlencode | --json | \
--header | --proxy-header | --write-out | -${noargopts}[dHw])
if [[ $cur == \@* ]]; then
_comp_compgen -c "${cur:1}" filedir
_comp_compgen -a -c "${cur:1}" -- -W '-'
if [[ ${#COMPREPLY[@]} -eq 1 && -d ${COMPREPLY[0]} ]]; then
COMPREPLY[0]+=/
compopt -o nospace
fi
COMPREPLY=("${COMPREPLY[@]/#/@}")
fi
return
;;
--delegation)
_comp_compgen -- -W 'none policy always'
return
;;
--dns-ipv[46]-addr)
_comp_compgen_ip_addresses -"${prev:9:1}"
return
;;
--dns-servers | --noproxy)
_comp_compgen_known_hosts -- "${cur##*,}"
((${#COMPREPLY[@]})) &&
_comp_delimited , -W '"${COMPREPLY[@]}"'
return
;;
--engine)
local engines=$(
"$1" --engine list 2>/dev/null |
command grep "^[[:space:]]"
)
_comp_compgen -- -W '$engines list'
return
;;
--ftp-port | -${noargopts}P)
_comp_compgen_available_interfaces -a
_comp_compgen -a known_hosts -- "$cur"
_comp_compgen -a ip_addresses -a
return
;;
--ftp-method)
_comp_compgen -- -W 'multicwd nocwd singlecwd'
return
;;
--ftp-ssl-ccc-mode)
_comp_compgen -- -W 'active passive'
return
;;
--interface)
_comp_compgen_available_interfaces -a
return
;;
--help | -${noargopts}h)
local x categories
if _comp_split categories "$("$1" --help non-existent-category 2>&1 |
_comp_awk '/^[ \t]/ {print $1}')"; then
for x in "${categories[@]}"; do
# Looks like an option? Likely no --help category support
[[ $x != -* ]] || return
done
_comp_compgen -- -W '"${categories[@]}" category all'
fi
return
;;
--krb)
_comp_compgen -- -W 'clear safe confidential private'
return
;;
--pinnedpubkey | --proxy-pinnedpubkey)
_comp_compgen_filedir '@(pem|der|key)'
return
;;
--preproxy | --proxy | --socks4 | --socks4a | --socks5 | \
--socks5-hostname | -${noargopts}x)
_comp_compgen_known_hosts -- "$cur"
return
;;
--proto-default)
_comp_compgen_split "$("$1" --version 2>/dev/null | command sed -e '/Protocols/!d' -e 's/Protocols://')"
;;
--pubkey)
_comp_compgen -x ssh identityfile pub
return
;;
--request | -${noargopts}X)
# TODO: these are valid for http(s) only
_comp_compgen -- -W 'GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE
PATCH'
return
;;
--stderr)
_comp_compgen -- -W '-'
_comp_compgen -a filedir
return
;;
--tls-max)
_comp_compgen -- -W 'default 1.0 1.1 1.2 1.3'
return
;;
--tlsauthtype | --proxy-tlsauthtype)
_comp_compgen -- -W 'SRP'
return
;;
--trace | --trace-ascii)
_comp_compgen -- -W '% -'
_comp_compgen -a filedir
return
;;
esac
if [[ $cur == -* ]]; then
_comp_compgen_help -- --help all
[[ ${COMPREPLY-} ]] || _comp_compgen_help
fi
} &&
complete -F _comp_cmd_curl curl
# ex: filetype=sh
|