diff options
Diffstat (limited to '')
-rw-r--r-- | completions/wget | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/completions/wget b/completions/wget new file mode 100644 index 0000000..d6a2fe9 --- /dev/null +++ b/completions/wget @@ -0,0 +1,174 @@ +# wget(1) completion -*- shell-script -*- + +_wget() +{ + local cur prev words cword split + _init_completion -s || return + + case $prev in + --version | --help | -!(-*)[hV]) + return + ;; + --progress) + COMPREPLY=($(compgen -W 'bar dot' -- "$cur")) + return + ;; + --bind-address) + _ip_addresses + return + ;; + --domains | --exclude-domains | -!(-*)D) + _known_hosts_real -- "$cur" + return + ;; + --restrict-file-names) + local excludes=() + case $cur in + *unix* | *windows*) + excludes=(windows unix) + ;;& + *lowercase* | *uppercase*) + excludes+=(lowercase uppercase) + ;;& + *nocontrol*) + excludes+=(nocontrol) + ;;& + *ascii*) + excludes+=(ascii) + ;; + esac + local excludes_str=$( + export IFS='|' + echo "${excludes[*]}" + ) + + # prevopt is the previous options string used as a prefix + # to avoid COMPREPLY replacing them with the $lastopt completion + local lastopt=${cur/*,/} prevopt= + [[ $cur == *,* ]] && prevopt=${cur%,*}, + + COMPREPLY=($(compgen -P "$prevopt" -X "@($excludes_str)" \ + -W 'unix windows nocontrol ascii lowercase uppercase' \ + -- "$lastopt")) + + # +o nospace when no more valid option is possible (= append a space) + local opt_as_arr=(${COMPREPLY[0]//,/ }) + ((${#opt_as_arr[@]} < 4)) && compopt -o nospace + return + ;; + --prefer-family) + COMPREPLY=($(compgen -W 'IPv4 IPv6 none' -- "$cur")) + return + ;; + --directory-prefix | --ca-directory | --warc-tempdir | -!(-*)P) + _filedir -d + return + ;; + --output-file | --append-output | --config | --load-cookies | --save-cookies | \ + --post-file | --certificate | --ca-certificate | --private-key | \ + --random-file | --egd-file | --warc-file | --warc-dedup | -!(-*)[oa]) + _filedir + return + ;; + --output-document | --input-file | -!(-*)[Oi]) + _filedir && [[ $cur == - || -z $cur ]] && COMPREPLY+=(-) + return + ;; + --secure-protocol) + COMPREPLY=($(compgen -W 'auto SSLv2 SSLv3 TLSv1' -- "$cur")) + return + ;; + --certificate-type | --private-key-type) + COMPREPLY=($(compgen -W 'PEM DER' -- "$cur")) + return + ;; + --follow-tags | --ignore-tags) + local lastopt=${cur/*,/} prevopt= + [[ $cur == *,* ]] && prevopt=${cur%,*}, + + COMPREPLY=($(compgen -P "$prevopt" -W 'a abbr acronym address + applet area b base basefont bdo big blockquote body br button + caption center cite code col colgroup dd del dir div dfn dl dt + em fieldset font form frame frameset h6 head hr html i iframe + img input ins isindex kbd label legend li link map menu meta + noframes noscript object ol optgroup option p param pre q s + samp script select small span strike strong style sub sup table + tbody td textarea tfoot th thead title tr tt u ul var xmp' \ + -- "$lastopt")) + return + ;; + --tries | --timeout | --dns-timeout | --connect-timeout | --read-timeout | \ + --wait | --waitretry | --cut-dirs | --max-redirect | --level | -!(-*)[tTwl]) + # expect integer number + COMPREPLY+=($(compgen -P "$cur" -W "{0..9}")) + compopt -o nospace + return + ;; + --quota | --limit-rate | --warc-max-size | -!(-*)Q) + # expect size + if [[ $cur == *[km] ]]; then + COMPREPLY=($(compgen -W "$cur")) + elif [[ $cur ]]; then + COMPREPLY=($(compgen -P "$cur" -W "{0..9} k m")) + compopt -o nospace + else + COMPREPLY=($(compgen -W "{0..9}")) + compopt -o nospace + fi + return + ;; + --user | --http-user | --proxy-user | --ftp-user) + COMPREPLY=($(compgen -W "$(command sed -n \ + '/^login/s/^[[:blank:]]*login[[:blank:]]//p' ~/.netrc \ + 2>/dev/null)" -- "$cur")) + return + ;; + --header) + COMPREPLY=($(compgen -W 'Accept Accept-Charset Accept-Encoding + Accept-Language Accept-Ranges Age Allow Authorization + Cache-Control Connection Content-Encoding Content-Language + Content-Length Content-Location Content-MD5 Content-Range + Content-Type Date ETag Expect Expires From Host If-Match + If-Modified-Since If-None-Match If-Range If-Unmodified-Since + Last-Modified Location Max-Forwards Pragma Proxy-Authenticate + Proxy-Authorization Range Referer Retry-After Server TE Trailer + Transfer-Encoding Upgrade User-Agent Vary Via Warning + WWW-Authenticate' -- "$cur")) + compopt -o nospace + return + ;; + --local-encoding | --remote-encoding) + type -P xauth &>/dev/null && _xfunc iconv _iconv_charsets + return + ;; + --execute | -!(-*)e) + return # TODO base=STR + ;; + --report-speed) + COMPREPLY=($(compgen -W 'bits' -- "$cur")) + return + ;; + --regex-type) + COMPREPLY=($(compgen -W 'posix' -- "$cur")) + return + ;; + --base | --password | --ftp-password | --http-password | --proxy-password | \ + --default-page | --referer | --user-agent | --post-data | --warc-header | \ + --accept | --reject | --accept-regex | --reject-regex | --include-directories | \ + --exclude-directories | -!(-*)[BUARIX]) + # argument required but no completions available + return + ;; + esac + + $split && return + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + [[ ${COMPREPLY-} == *= ]] && compopt -o nospace + fi + +} && + complete -F _wget wget + +# ex: filetype=sh |