summaryrefslogtreecommitdiffstats
path: root/completions/curl
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