blob: 55865c081a599e85bc9b7e8a7f17b6a847be05b7 (
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
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
|
# 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 | --trace | --trace-ascii | \
--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 | --write-out | \
-${noargopts}[CFmQreYytzuAVw])
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 | --header | \
--proxy-header | -${noargopts}[dH])
if [[ $cur == \@* ]]; then
_comp_compgen -c "${cur:1}" filedir
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[@]}"'
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
;;
esac
if [[ $cur == -* ]]; then
_comp_compgen_help -- --help all
[[ ${COMPREPLY-} ]] || _comp_compgen_help
fi
} &&
complete -F _comp_cmd_curl curl
# ex: filetype=sh
|