[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 2.0-56-g166ac77

Guillaume Rousse guillomovitch at gmail.com
Mon Oct 29 23:11:58 UTC 2012


The following commit has been merged in the master branch:
commit a54fa7340a617eabb2c3bfede9a24c9f142505be
Author: Yann Rouillard <yann at opencsw.org>
Date:   Tue Oct 30 00:02:59 2012 +0100

    new completion: pkgadd

diff --git a/CHANGES b/CHANGES
index 3c0e2db..4096518 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@
   * nmcli: new completion
   * svcadm: new completion, contributed by Yann Rouillard <yann at opencsw.org>
   * pkg-get: new completion, contributed by Yann Rouillard <yann at opencsw.org>
+  * pkgadd: new completion, contributed by Yann Rouillard <yann at opencsw.org>
 
 bash-completion (2.0)
 
diff --git a/completions/Makefile.am b/completions/Makefile.am
index d54ea0a..b9d261c 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -236,6 +236,7 @@ bashcomp_DATA = a2x \
 		pkg-config \
 		pkg-get \
 		pkg_delete \
+		pkgadd \
 		pkgtool \
 		plague-client \
 		pm-hibernate \
diff --git a/completions/pkgadd b/completions/pkgadd
new file mode 100644
index 0000000..2809881
--- /dev/null
+++ b/completions/pkgadd
@@ -0,0 +1,59 @@
+# pkgadd completion                                        -*- shell-script -*-
+#
+# Copyright 2006 Yann Rouillard <yann at opencsw.org>
+
+_pkgadd ()
+{
+    local cur prev words cword
+    _init_completion -n : || return
+
+    # if a device directory was given
+    # we must complete with the package
+    # available in this directory
+    local device=/var/spool/pkg;
+    local i=$cword
+    while [[ $((i--)) -gt 0 ]]; do
+        case "${words[$i]}" in
+            -d)
+                device="${words[$((i+1))]}";
+                break
+                ;;
+        esac;
+    done;
+
+    case $prev in 
+        -d)
+            _filedir pkg
+            _filedir -d
+            ;;
+        -a|-r|-V)
+            _filedir
+            ;;
+        -k|-s|-R)
+            _filedir -d
+            ;;
+        -P|-k|-x)
+            ;;
+        *)
+            if [[ ${cur} == -* ]] ; then
+                local opts="-a -A -d -k -n -M -P -r -R -s -v -V -x"
+                COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+            else
+                local pkginst_list
+                if [[ -d $device ]]; then
+                    for filedir in $(/bin/ls -1 $device); do
+                        if [[ -d "$device/$filedir" ]] && [[ -f "$device/$filedir/pkginfo" ]]; then
+                            pkginst_list+=( ${pkginst_list[@]:-} "$filedir" )
+                        fi
+                    done
+                        pkginst_list="${pkginst_list[@]}"
+                else
+                    pkginst_list=$(strings $(dequote $device) | grep "^PKG=" | sort -u | cut -d= -f2)
+            fi
+            COMPREPLY=( $(compgen -W "$pkginst_list" -- ${cur}) )
+        fi
+    esac
+} &&
+complete -F _pkgadd pkgadd
+
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/test/completion/pkgadd.exp b/test/completion/pkgadd.exp
new file mode 100644
index 0000000..128c823
--- /dev/null
+++ b/test/completion/pkgadd.exp
@@ -0,0 +1 @@
+assert_source_completions pkgadd
diff --git a/test/lib/completions/awk.exp b/test/lib/completions/pkgadd.exp
similarity index 79%
copy from test/lib/completions/awk.exp
copy to test/lib/completions/pkgadd.exp
index 260dabc..ba5eadf 100644
--- a/test/lib/completions/awk.exp
+++ b/test/lib/completions/pkgadd.exp
@@ -11,9 +11,7 @@ proc teardown {} {
 setup
 
 
-assert_complete_any "awk "
-
-
+assert_complete_any "pkgadd "
 sync_after_int
 
 

-- 
bash-completion



More information about the Bash-completion-commits mailing list