[Bash-completion-devel] wget(1) completion
Raphaël Droz
raphael.droz at gmail.com
Sat Jul 21 11:13:15 UTC 2012
On Sat, Jul 21, 2012 at 01:08:54PM +0200, Raphaël Droz wrote:
> ping ? (this one being rerolled for years)
forgot to re-attach the file:
wget(1) completion
-------------- next part --------------
# wget(1) completion -*- shell-script -*-
_wget() {
local cur prev words cword split
_init_completion -s || return
case $prev in
--progress)
COMPREPLY=( $( compgen -W 'bar dot' -- $cur ) )
return 0
;;
--bind-address)
_ip_addresses "$cur"
return 0
;;
-D|--domains|--exclude-domains)
_known_hosts_real "$cur"
return 0
;;
--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=( $(echo ${COMPREPLY[0]//,/ }) )
[[ ${#opt_as_arr[@]} -lt 4 ]] && compopt -o nospace
return 0
;;
--prefer-family)
COMPREPLY=( $( compgen -W 'IPv4 IPv6 none' -- $cur ) )
return 0
;;
-P|--directory-prefix|--ca-directory)
_filedir -d
return 0
;;
-a|--append-output|--load-cookies|--post-file|--ca-certificate|\
--certificate|--private-key|--random-file|--egd-file)
_filedir
return 0
;;
-o|--output-file|-O|--output-document|--save-cookies|--default-page)
# avoid accidentally overwriting files: suggest directories only
_filedir -d
# and, in some cases, the standard output too
[[ $prev = @(-O|--output-document) && ( $cur = -* || -z $cur ) ]] && COMPREPLY+=( - )
return 0
;;
-i|--input-file)
# adds the standard input to the possibilities
_filedir && [[ $cur = -* || -z $cur ]] && COMPREPLY+=( - )
return 0
;;
--secure-protocol)
COMPREPLY=( $( compgen -W 'auto SSLv2 SSLv3 TLSv1' -- $cur ) )
return 0
;;
--certificate-type|--private-key-type)
COMPREPLY=( $( compgen -W 'PEM DER' -- $cur ) )
return 0
;;
--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 0
;;
--tries|--dns-timeout|--connect-timeout|--timeout|--limit-rate|\
--wait|--waitretry|--cut-dirs|--max-redirect)
COMPREPLY=( $( compgen -W "{0..9}" -- $cur ) )
return 0
;;
--quota)
COMPREPLY=( $( compgen -W "{0..9}{k,m}" -- $cur ) )
return 0
;;
--http-user|--proxy-user|--ftp-user|--user)
COMPREPLY=( $( compgen -W "$(sed -n '/^login/s/^[[:blank:]]*login[[:blank:]]//p' ~/.netrc)" -- $cur ) )
return 0
;;
--level)
COMPREPLY=( $( compgen -W "{1..5}" -- $cur ) )
return 0
;;
--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 0
;;
--local-encoding|--remote-encoding)
type -P xauth &>/dev/null && \
COMPREPLY=( $( compgen -W '$( iconv -l | \
sed -e "s@/*\$@@" -e "s/[,()]//g" )' -- "$cur" ) )
return 0
;;
--execute)
return 0 # TODO base=STR
;;
esac
$split && return
if [[ $cur = -* ]]; then
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
[[ $COMPREPLY == *= ]] && compopt -o nospace
fi
return 0
} &&
complete -F _wget wget
# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh
More information about the Bash-completion-devel
mailing list