mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-03-12 04:36:22 -07:00
175 lines
6.5 KiB
Bash
175 lines
6.5 KiB
Bash
# 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
|