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

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


The following commit has been merged in the master branch:
commit 6ddec67c2f923ce54f3935bc23822c9eaf350430
Author: Yann Rouillard <yann at opencsw.org>
Date:   Mon Oct 29 23:58:14 2012 +0100

    new completion: pkg-get

diff --git a/CHANGES b/CHANGES
index 49b22a0..3c0e2db 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
   [ Guillaume Rousse ]
   * gphoto2: new completion
   * 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>
 
 bash-completion (2.0)
 
diff --git a/completions/Makefile.am b/completions/Makefile.am
index db23a3a..d54ea0a 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -234,6 +234,7 @@ bashcomp_DATA = a2x \
 		pine \
 		ping \
 		pkg-config \
+		pkg-get \
 		pkg_delete \
 		pkgtool \
 		plague-client \
@@ -303,6 +304,7 @@ bashcomp_DATA = a2x \
 		strace \
 		su \
 		sudo \
+		svcadm \
 		svk \
 		sync_members \
 		sysbench \
diff --git a/completions/pkg-get b/completions/pkg-get
new file mode 100755
index 0000000..bf66fcc
--- /dev/null
+++ b/completions/pkg-get
@@ -0,0 +1,75 @@
+# pkg-get.completion completion                            -*- shell-script -*-
+#
+# Copyright 2006 Yann Rouillard <yann at opencsw.org>
+
+_have pkg-get && 
+_pkg-get_get_catalog_file()
+{
+    local url="$1"
+    local catalog_file i conffile
+
+    for file in /etc/opt/csw/pkg-get.conf /opt/csw/etc/pkg-get.conf /etc/pkg-get.conf; do
+        if [[ -f $file ]]; then
+            conffile="$file"
+            break
+        fi
+    done
+    conffile="${conffile:-/opt/csw/etc/pkg-get.conf}"
+
+    if [[ -z "$url" ]]; then
+        url=$(awk -F= ' $1=="url" { print $2 }' $conffile)
+    fi
+
+    catalog_file="${url##*//}"
+    catalog_file="${catalog_file%%/*}"
+    catalog_file="/var/pkg-get/catalog-$catalog_file"
+
+    echo "$catalog_file"
+} &&
+_pkg-get()
+{
+    local cur prev file catalog_file url command
+    COMPREPLY=()
+    cur="${COMP_WORDS[COMP_CWORD]}"
+    prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+    if [[ "${prev}" = "-s" ]]; then
+        return 1
+    fi
+
+    i=${#COMP_WORDS[*]} 
+    while [[ $i -gt 0 ]]; do
+        i=$((i-1))
+        if [[ "${COMP_WORDS[$i]}" = "-s" ]]; then
+            url="${COMP_WORDS[$((i+1))]}"
+        fi
+        if [[ "${COMP_WORDS[$i]}" == @(available|-a|describe|-D|download|-d|install|-i|list|updatecatalog|-U|upgrade|-u) ]]; then
+            command="${COMP_WORDS[$i]}"
+        fi
+    done
+
+    if [[ -n "$command" ]]; then
+        if [[ "$command" == @(describe|-D|download|-d|install|-i) ]]; then
+            catalog_file=$(_pkg-get_get_catalog_file "$url")
+            if [[ -f $catalog_file ]]; then
+                local packages_list=$(awk ' $0 ~ /BEGIN PGP SIGNATURE/ { exit } $1 ~ /^Hash:/ || $1 ~ /^ *(-|#|$)/ { next } { print $1 }' $catalog_file)
+                COMPREPLY=( $(compgen -W "${packages_list}" -- ${cur}) )
+            fi
+        fi
+        return 0
+    fi
+
+    if [[ ${cur} == -* ]] ; then
+        local opts="-c -d -D -f -i -l -s -S -u -U -v"
+        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+        return 0
+    else
+        local commands="available describe download install list \
+            updatecatalog upgrade"
+        COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
+        return 0
+    fi
+} &&
+complete -F _pkg-get pkg-get
+
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/test/completion/pkg-get.exp b/test/completion/pkg-get.exp
new file mode 100644
index 0000000..4499142
--- /dev/null
+++ b/test/completion/pkg-get.exp
@@ -0,0 +1 @@
+assert_source_completions pkg-get
diff --git a/test/lib/completions/abook.exp b/test/lib/completions/pkg-get.exp
similarity index 78%
copy from test/lib/completions/abook.exp
copy to test/lib/completions/pkg-get.exp
index 43f6272..38b2b97 100644
--- a/test/lib/completions/abook.exp
+++ b/test/lib/completions/pkg-get.exp
@@ -11,9 +11,7 @@ proc teardown {} {
 setup
 
 
-assert_complete_any "abook "
-
-
+assert_complete_any "pkg-get "
 sync_after_int
 
 

-- 
bash-completion



More information about the Bash-completion-commits mailing list