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
# 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
_______________________________________________
Bash-completion-devel mailing list
Bash-completion-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/bash-completion-devel

Reply via email to