[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 7a174c0e1f7d8ff9ecdc478ef8acfa35bdf11b40

Ville Skyttä ville.skytta at iki.fi
Mon Nov 1 19:39:54 UTC 2010


The following commit has been merged in the master branch:
commit 7a174c0e1f7d8ff9ecdc478ef8acfa35bdf11b40
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Mon Nov 1 21:39:03 2010 +0200

    Add ip completion (Debian: #600617).

diff --git a/CHANGES b/CHANGES
index cee60a9..0b39ca6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -9,8 +9,8 @@ bash-completion (2.x)
   [ Ville Skyttä ]
   * Activate hping2 completion also for hping and hping3.
   * Add badblocks, compgen, crontab, dumpe2fs, e2freefrag, e2label, ether-wake,
-    filefrag, iftop, lrzip, POSIX sh, sha{,224,256,384,512}sum, sysbench,
-    tune2fs, xmodmap, and xrdb completions.
+    filefrag, iftop, ip (Debian: #600617), lrzip, POSIX sh,
+    sha{,224,256,384,512}sum, sysbench, tune2fs, xmodmap, and xrdb completions.
   * Add *.gif (Alioth: #312512), *.m2t (Alioth: #312770), *.3gpp, *.3gpp2,
     *.awb, and *.iso (Alioth: #311420) to mplayer filename completions.
   * Add "short" tarball extensions to unxz, unlzma etc completions.
diff --git a/completions/Makefile.am b/completions/Makefile.am
index 5c90429..5ca478f 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -59,6 +59,7 @@ bashcomp_DATA = abook \
 		info \
 		iptables \
 		ipmitool \
+		iproute2 \
 		ipsec \
 		ipv6calc \
 		isql \
diff --git a/completions/iproute2 b/completions/iproute2
new file mode 100644
index 0000000..f5d7bbd
--- /dev/null
+++ b/completions/iproute2
@@ -0,0 +1,285 @@
+# iproute2 tools completion
+
+have ip &&
+_ip()
+{
+    COMPREPLY=()
+    local cur prev words cword
+    _get_comp_words_by_ref cur prev words cword
+
+    case $prev in
+        -V|-Version|-rc|-rcvbuf)
+            return 0
+            ;;
+        -f|-family)
+            COMPREPLY=( $( compgen -W 'inet inet6 ipx dnet link' -- "$cur" ) )
+            return 0
+            ;;
+        -b|-batch)
+            _filedir
+            return 0
+            ;;
+        -force)
+            COMPREPLY=( $( compgen -W '-batch' -- "$cur" ) )
+            return 0
+            ;;
+    esac
+
+    local subcword cmd subcmd
+    for (( subcword=1; subcword < ${#words[@]}-1; subcword++ )); do
+        [[ ${words[subcword]} == -b?(atch) ]] && return 0
+        [[ -n $cmd ]] && subcmd=${words[subcword]} && break
+        [[ ${words[subcword]} != -* && \
+                ${words[subcword-1]} != -@(f?(amily)|rc?(vbuf)) ]] && \
+            cmd=${words[subcword]}
+    done
+
+    if [[ -z $cmd ]]; then
+        case $cur in
+            -*)
+                local c="-Version -statistics -details -resolve -family
+                    -oneline -timestamp -batch -rcvbuf"
+                [[ $cword -eq 1 ]] && c="$c -force"
+                COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
+                return 0
+                ;;
+            *)
+                COMPREPLY=( $( compgen -W "help $( ip help 2>&1 | \
+                    sed -e '/OBJECT := /,/}/!d' \
+                        -e 's/.*{//' -e 's/}.*//' -e 's/|//g' )" -- "$cur" ) )
+                return 0
+                ;;
+        esac
+    fi
+
+    [[ $subcmd == help ]] && return 0
+
+    case $cmd in
+        link)
+            case $subcmd in
+                add)
+                    # TODO
+                    ;;
+                delete)
+                    case $(($cword-$subcword)) in
+                        1)
+                            _available_interfaces
+                            ;;
+                        2)
+                            COMPREPLY=( $( compgen -W 'type' -- "$cur" ) )
+                            ;;
+                        3)
+                            [[ $prev == type ]] && \
+                                COMPREPLY=( $( compgen -W 'vlan veth vcan dummy
+                                    ifb macvlan can' -- "$cur" ) )
+                            ;;
+                    esac
+                    ;;
+                set)
+                    if [[ $cword-$subcword -eq 1 ]]; then
+                        _available_interfaces
+                    else
+                        case $prev in
+                            arp|dynamic|multicast|allmulticast|promisc|\
+                            trailers)
+                                COMPREPLY=( $( compgen -W 'on off' \
+                                    -- "$cur" ) )
+                                ;;
+                            txqueuelen|name|address|broadcast|mtu|netns|alias)
+                                ;;
+                            *)
+                                local c="arp dynamic multicast allmulticast
+                                    promisc trailers txqueuelen name address
+                                    broadcast mtu netns alias"
+                                [[ $prev != @(up|down) ]] && c="$c up down"
+                                COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
+                                ;;
+                        esac
+                    fi
+                    ;;
+                show)
+                    [[ $cword -eq $subcword+1 ]] && _available_interfaces
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help add delete set show' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        addr)
+            case $subcmd in
+                add|change|replace)
+                    # TODO
+                    ;;
+                del)
+                    # TODO
+                    ;;
+                show|flush)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help add change replace del
+                            show flush' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        addrlabel)
+            case $subcmd in
+                list|add|del|flush)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help list add del flush' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        route)
+            case $subcmd in
+                list|flush)
+                    # TODO
+                    ;;
+                get)
+                    # TODO
+                    ;;
+                add|del|change|append|replace|monitor)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help list flush get add del
+                            change append replace monitor' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        rule)
+            case $subcmd in
+                list|add|del|flush)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help list add del flush' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        neigh)
+            case $subcmd in
+                add|del|change|replace)
+                    # TODO
+                    ;;
+                show|flush)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help add del change replace
+                            show flush' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        ntable)
+            case $subcmd in
+                change)
+                    # TODO
+                    ;;
+                show)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help change show' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        tunnel)
+            case $subcmd in
+                add|change|del|show|prl|6rd)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help add change del show prl
+                            6rd' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        maddr)
+            case $subcmd in
+                add|del)
+                    # TODO
+                    ;;
+                show)
+                    if [[ $cword -eq $subcword+1 || $prev == dev ]]; then
+                        _available_interfaces
+                        [[ $prev != dev ]] && \
+                            COMPREPLY=( $( compgen -W '${COMPREPLY[@]} dev' \
+                            -- "$cur" ) )
+                    fi
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help add del show' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+        mroute)
+            case $subcmd in
+                show)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help show' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+         monitor)
+            case $subcmd in
+                all) ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'help all' -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+
+         xfrm)
+            case $subcmd in
+                state|policy|monitor)
+                    # TODO
+                    ;;
+                *)
+                    [[ $cword -eq $subcword ]] && \
+                        COMPREPLY=( $( compgen -W 'state policy monitor' \
+                        -- "$cur" ) )
+                    ;;
+            esac
+            ;;
+    esac
+} &&
+complete -F _ip ip
+
+# 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
diff --git a/test/completion/ip.exp b/test/completion/ip.exp
new file mode 100644
index 0000000..e80841e
--- /dev/null
+++ b/test/completion/ip.exp
@@ -0,0 +1 @@
+assert_source_completions ip
diff --git a/test/lib/completions/bk.exp b/test/lib/completions/ip.exp
similarity index 81%
copy from test/lib/completions/bk.exp
copy to test/lib/completions/ip.exp
index b652e6b..8f45f6a 100644
--- a/test/lib/completions/bk.exp
+++ b/test/lib/completions/ip.exp
@@ -11,7 +11,7 @@ proc teardown {} {
 setup
 
 
-assert_complete_any "bk "
+assert_complete_any "ip "
 
 
 sync_after_int

-- 
bash-completion



More information about the Bash-completion-commits mailing list