[Bash-completion-devel] wget completion
gibboris at gmail.com
gibboris at gmail.com
Fri Mar 13 19:50:58 UTC 2009
Hello,
I just tried a first attempt for the wget completion (see attachement).
(it's also my first completion)
- case statements are not yet "optimised".
- don't know how to specifically set a COMPREPLY as an option which
requires a parameter (want to see "=" appended to the option list)
A solution would be to append '=' to theses options in $cur case
and use --option=) in $prev case, but maybe a cleaner solution exists ?
- long option where a short option exists are not given in the
completion of long options ([ [:blank:]]), why ?
Don't know myself, but I ""feel"" I should handle them separatly.
- any way to complete (or at least to give a clue about the value
expected) for an option waiting for a numeric parameter ?
This question joins the above one about appending a '=' to parametered
options.
- doubts about completion of main argument, ideas :
"f" --> "tp://"
"h" --> "ttp"
"http" --> "s://" | "://"
"w" | "http://w" | "https://w" --> "www."
- completing -O, --output-document, --output-file, and -o
make overwriting easier ... should they be implemented ?
Will continue soon, but I first would like any
comment/advice/criticism/whatever.
Raph
-------------- next part --------------
# wget(1) completion
# Copyright 2009 Droz Raphaƫl <gibboris at gmail.com>
# License: GNU GPL v2 or later
#
# $Id: wget,v 0.1 2009/03/13 19:35:22 r4ph Exp $
_wget()
{
local cur prev
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
--progress)
COMPREPLY=( $( compgen -W 'bar dot' -- $cur ) )
return 0
;;
--bind-address|--exclude-domains|--domains|-D)
_known_hosts
return 0
;;
--restrict-file-names)
COMPREPLY=( $( compgen -W 'unix windows' -- $cur ) )
#todo : ,nocontrol
return 0
;;
--prefer-family)
COMPREPLY=( $( compgen -W 'IPv4 IPv6 none' -- $cur ) )
return 0
;;
--directory-prefix|--ca-directory|-P)
_filedir -d
return 0
;;
--load-cookies|--save-cookies|--post-file|--certificate|--ca-certificate|--private-key|--random-file|--egd-file|--append-output|-a)
_filedir
return 0
;;
--input-file|-i)
_filedir && COMPREPLY=( "${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)
COMPREPLY=( $( compgen -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' -- $cur ) )
return 0
;;
#TODO : long options with a parameter not defined above
esac
case "$cur" in
--*)
#parametered ones first (only those defined above)
#then long non-parametered ones
COMPREPLY=( $( compgen -W "--progress --bind-address --restrict-file-names --prefer-family --directory-prefix \
--load-cookies --save-cookies --post-file --certificate --ca-certificate --private-key --random-file \
--egd-file --secure-protocol --append-output --input-file \
--certificate-type --private-key-type --ca-directory --exclude-domains --domains --follow-tags --ignore-tags \
\
$(wget -h | sed -n 's/^[ [:blank:]]*\(--[a-z-]*\)[ [:blank:]].*$/\1/Ip')" -- $cur ) )
return 0
;;
-*)
COMPREPLY=( $( compgen -W "$(wget -h | sed -n 's/^[ [:blank:]]*\(-[a-z46]\).*$/\1/Ip')" -- $cur ) )
return 0
;;
#*)
# COMPREPLY=( $( compgen -W 'http:// https:// ftp:// ftp:// file://' -- $cur ) )
# return 0
# ;;
esac
return 0
}
complete -F _wget -o default wget
More information about the Bash-completion-devel
mailing list