[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 2.0-45-ge29c6bc

Igor Murzov e-mail at date.by
Sat Oct 20 16:04:56 UTC 2012


The following commit has been merged in the master branch:
commit e29c6bc872ba437f48eae7c70347c843413de4cc
Author: Igor Murzov <e-mail at date.by>
Date:   Sat Oct 20 19:59:28 2012 +0400

    wget: New completion.
    
    Initial patch by: Raphaël Droz <raphael.droz at gmail.com>

diff --git a/bash_completion b/bash_completion
index 8d532e1..3778e0b 100644
--- a/bash_completion
+++ b/bash_completion
@@ -1792,7 +1792,7 @@ complete -F _longopt a2ps awk base64 bash bc bison cat colordiff cp csplit \
     grep grub head indent irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
     mv netstat nl nm objcopy objdump od paste patch pr ptx readelf rm rmdir \
     sed seq sha{,1,224,256,384,512}sum shar sort split strip sum tac tail tee \
-    texindex touch tr uname unexpand uniq units vdir wc wget who
+    texindex touch tr uname unexpand uniq units vdir wc who
 
 declare -A _xspecs
 _filedir_xspec()
diff --git a/completions/Makefile.am b/completions/Makefile.am
index a6cba38..db23a3a 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -334,6 +334,7 @@ bashcomp_DATA = a2x \
 		vpnc \
 		watch \
 		webmitm \
+		wget \
 		wine \
 		withlist \
 		wodim \
diff --git a/completions/wget b/completions/wget
new file mode 100644
index 0000000..3cc8017
--- /dev/null
+++ b/completions/wget
@@ -0,0 +1,164 @@
+# 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
+            ;;
+        --bind-address)
+            _ip_addresses "$cur"
+            return
+            ;;
+        -D|--domains|--exclude-domains)
+            _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=( $( echo ${COMPREPLY[0]//,/ } ) )
+            [[ ${#opt_as_arr[@]} -lt 4 ]] && compopt -o nospace
+            return
+            ;;
+        --prefer-family)
+            COMPREPLY=( $( compgen -W 'IPv4 IPv6 none' -- "$cur" ) )
+            return
+            ;;
+        -P|--directory-prefix|--ca-directory|--warc-tempdir)
+            _filedir -d
+            return
+            ;;
+        -o|--output-file|-a|--append-output|--config|--load-cookies|\
+        --save-cookies|--post-file|--certificate|--ca-certificate|\
+        --private-key|--random-file|--egd-file|--warc-file|--warc-dedup)
+            _filedir
+            return
+            ;;
+        -O|--output-document|-i|--input-file)
+            _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
+            ;;
+        -t|--tries|-T|--timeout|--dns-timeout|--connect-timeout|--read-timeout|\
+        -w|--wait|--waitretry|--cut-dirs|--max-redirect|-l|--level)
+            # expect integer number
+            COMPREPLY+=( $( compgen -P "$cur" -W "{0..9}" ) )
+            compopt -o nospace
+            return
+            ;;
+        -Q|--quota|--limit-rate|--warc-max-size)
+            # expect size
+            if [[ $cur == *@(k|m) ]]; 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 "$( 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 && \
+            COMPREPLY=( $( compgen -W '$( iconv -l 2>/dev/null | \
+                sed -e "s@/*\$@@" -e "s/[,()]//g" 2>/dev/null )' -- "$cur" ) )
+            return
+            ;;
+        -e|--execute)
+            return # TODO base=STR
+            ;;
+        -nv|--report-speed)
+            COMPREPLY=( $( compgen -W 'bits' -- "$cur" ) )
+            return
+            ;;
+        -B|--base|--password|--ftp-password|--http-password|--proxy-password|\
+        --default-page|--referer|-U|--user-agent|--post-data|--warc-header|-A|\
+        --accept|-R|--reject|-I|--include-directories|-X|--exclude-directories)
+            # 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: ts=4 sw=4 et filetype=sh
diff --git a/test/lib/completions/wget.exp b/test/lib/completions/wget.exp
index 8e830a1..457ae2c 100644
--- a/test/lib/completions/wget.exp
+++ b/test/lib/completions/wget.exp
@@ -17,4 +17,10 @@ assert_complete_any "wget --"
 sync_after_int
 
 
+assert_no_complete "wget "
+
+
+sync_after_int
+
+
 teardown

-- 
bash-completion



More information about the Bash-completion-commits mailing list