[yum-commits] yum-utils.bash

Ville Skyttä scop at osuosl.org
Sun Apr 24 20:05:06 UTC 2011


 yum-utils.bash |  174 +++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 107 insertions(+), 67 deletions(-)

New commits:
commit ece33b6cd26eb3a2051543f91845655a3d0d69b1
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Sun Apr 24 23:04:56 2011 +0300

    Use functions from recent bash-completion if available.

diff --git a/yum-utils.bash b/yum-utils.bash
index 29dc9bc..509ec3a 100644
--- a/yum-utils.bash
+++ b/yum-utils.bash
@@ -1,95 +1,117 @@
 # bash completion for yum-utils
 
+_yu_init_completion()
+{
+    if declare -F _get_comp_words_by_ref &>/dev/null ; then
+        _get_comp_words_by_ref -n = cur prev words
+    else
+        cur=$1 prev=$2 words=("${COMP_WORDS[@]}")
+    fi
+    declare -F _split_longopt &>/dev/null && _split_longopt && split=true
+}
+
 # repomanage
 _yu_repomanage()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help)
             return 0
             ;;
         -k|--keep)
-            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$2" ) )
+            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
             return 0
             ;;
     esac
 
-    if [[ "$2" == -* ]] ; then
+    $split && return 0
+
+    if [[ $cur == -* ]] ; then
         COMPREPLY=( $( compgen -W '--old --new --space --keep --nocheck
-            --help' -- "$2" ) )
+            --help' -- "$cur" ) )
         return 0
     fi
 
-    COMPREPLY=( $( compgen -d -- "$2" ) )
+    COMPREPLY=( $( compgen -d -- "$cur" ) )
 } &&
 complete -F _yu_repomanage -o filenames repomanage repomanage.py
 
 # package-cleanup
 _yu_package_cleanup()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    _yum_complete_baseopts "$2" "$3" 2>/dev/null && return 0
+    _yum_complete_baseopts "$cur" "$prev" 2>/dev/null && return 0
 
-    case "$3" in
+    case $prev in
         --leaf-regex|--qf|--queryformat)
             return 0
             ;;
         --count)
-            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$2" ) )
+            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
             return 0
             ;;
     esac
 
+    $split && return 0
+
     COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null ) --problems
         --queryformat --orphans --dupes --cleandupes --noscripts --leaves --all
         --leaf-regex --exclude-devel --exclude-bin --oldkernels --count
-        --keepdevel' -- "$2" ) )
+        --keepdevel' -- "$cur" ) )
 } &&
 complete -F _yu_package_cleanup -o filenames package-cleanup package-cleanup.py
 
 # verifytree
 _yu_verifytree()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help|-t|--testopia)
             return 0
             ;;
     esac
 
-    if [[ "$2" == -* ]] ; then
+    $split && return 0
+
+    if [[ $cur == -* ]] ; then
         COMPREPLY=( $( compgen -W '--help --checkall --testopia --treeinfo' \
-            -- "$2" ) )
+            -- "$cur" ) )
         return 0
     fi
 
-    COMPREPLY=( $( compgen -d -- "$2" ) )
+    COMPREPLY=( $( compgen -d -- "$cur" ) )
 } &&
 complete -F _yu_verifytree -o filenames verifytree verifytree.py
 
 # repo-graph
 _yu_repo_graph()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help)
             return 0
             ;;
         --repoid)
-            _yum_repolist all "$2" 2>/dev/null
+            _yum_repolist all "$cur" 2>/dev/null
             return 0
             ;;
         -c)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
             return 0
             ;;
     esac
 
-    COMPREPLY=( $( compgen -W '--help --repoid -c' -- "$2" ) )
+    $split && return 0
+
+    COMPREPLY=( $( compgen -W '--help --repoid -c' -- "$cur" ) )
 } &&
 complete -F _yu_repo_graph -o filenames repo-graph repo-graph.py
 
@@ -98,70 +120,74 @@ _yu_repo_rss()
 {
     COMPREPLY=()
 
-    case "$3" in
+    case $3 in
         -h|--help|-l|-t|-d|-r|-a)
             return 0
             ;;
         -f)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$cur" ) )
             return 0
             ;;
         -c)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
             return 0
             ;;
     esac
 
     COMPREPLY=( $( compgen -W '--help -f -l -t -d -r --tempcache -g -a -c' \
         -- "$2" ) )
-    [[ "$2" == -* ]] || _yum_repolist all "$2" 2>/dev/null || return 0
+    [[ $2 == -* ]] || _yum_repolist all "$2" 2>/dev/null || return 0
 } &&
 complete -F _yu_repo_rss -o filenames repo-rss repo-rss.py
 
 # repoclosure
 _yu_repoclosure()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help|-a|--arch|--basearch|--repofrompath)
             return 0
             ;;
         -c|--config)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
             return 0
             ;;
         -l|--lookaside|-r|--repoid)
-            _yum_repolist all "$2" 2>/dev/null
+            _yum_repolist all "$cur" 2>/dev/null
             return 0
             ;;
         -p|--pkg)
-            _yum_list all "$2" 2>/dev/null
+            _yum_list all "$cur" 2>/dev/null
             return 0
             ;;
         -g|--group)
-            _yum_grouplist "" "$2" 2>/dev/null
+            _yum_grouplist "" "$cur" 2>/dev/null
             return 0
             ;;
     esac
 
+    $split && return 0
+
     COMPREPLY=( $( compgen -W '--help --config --arch --basearch --builddeps
         --lookaside --repoid --tempcache --quiet --newest --repofrompath --pkg
-        --group' -- "$2" ) )
+        --group' -- "$cur" ) )
 } &&
 complete -F _yu_repoclosure -o filenames repoclosure repoclosure.py
 
 # repoquery
 _yu_repoquery()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    local groupmode=false
-    for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do
-        case "${COMP_WORDS[i]}" in -g|--group) groupmode=true ; break ;; esac
+    local word groupmode=false
+    for word in "${words[@]}" ; do
+        case $word in -g|--group) groupmode=true ; break ;; esac
     done
 
-    case "$3" in
+    case $prev in
         -h|--help|--version|-f|--file|--qf|--queryformat|--resolve|--archlist|\
         --whatprovides|--whatrequires|--whatobsoletes|--whatconflicts|\
         --repofrompath|--level|--search-fields)
@@ -169,49 +195,51 @@ _yu_repoquery()
             ;;
         -l|--list|-i|--info|-R|--requires)
             if $groupmode ; then
-                _yum_grouplist "" "$2" 2>/dev/null
+                _yum_grouplist "" "$cur" 2>/dev/null
             else
-                _yum_list all "$2" 2>/dev/null
+                _yum_list all "$cur" 2>/dev/null
             fi
             return 0
             ;;
         --provides|--obsoletes|--conflicts|--groupmember|--changelog|\
         --location|--nevra|--envra|--nvr|-s|--source)
-            _yum_list all "$2" 2>/dev/null
+            _yum_list all "$cur" 2>/dev/null
             return 0
             ;;
         --grouppkgs)
             COMPREPLY=( $( compgen -W 'all default optional mandatory' \
-                -- "$2" ) )
+                -- "$cur" ) )
             return 0
             ;;
         --pkgnarrow)
             COMPREPLY=( $( compgen -W 'all available updates installed extras
-                obsoletes recent repos' -- "$2" ) )
+                obsoletes recent repos' -- "$cur" ) )
             return 0
             ;;
         --repoid)
-            _yum_repolist all "$2" 2>/dev/null
+            _yum_repolist all "$cur" 2>/dev/null
             return 0
             ;;
         --enablerepo)
-            _yum_repolist disabled "$2" 2>/dev/null
+            _yum_repolist disabled "$cur" 2>/dev/null
             return 0
             ;;
         --disablerepo)
-            _yum_repolist enabled "$2" 2>/dev/null
+            _yum_repolist enabled "$cur" 2>/dev/null
             return 0
             ;;
         -c|--config)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
             return 0
             ;;
         --output)
-            COMPREPLY=( $( compgen -W 'text ascii-tree dot-tree' -- "$2" ) )
+            COMPREPLY=( $( compgen -W 'text ascii-tree dot-tree' -- "$cur" ) )
             return 0
             ;;
     esac
 
+    $split && return 0
+
     COMPREPLY=( $( compgen -W '--version --help --list --info --file
         --queryformat --groupmember --all --requires --provides --obsoletes
         --conflicts --changelog --location --nevra --envra --nvr --source
@@ -220,33 +248,36 @@ _yu_repoquery()
         --pkgnarrow --installed --show-duplicates --repoid --enablerepo
         --disablerepo --repofrompath --plugins --quiet --verbose --cache
         --tempcache --querytags --config --level --output --search
-        --search-fields' -- "$2" ) )
+        --search-fields' -- "$cur" ) )
 } &&
 complete -F _yu_repoquery -o filenames repoquery repoquery.py
 
 # yumdb
 _yu_yumdb()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help|-version)
             return 0
             ;;
         -c|--config)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
             return 0
             ;;
         shell)
-            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
+            COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) )
             return 0
             ;;
     esac
 
+    $split && return 0
+
     if [ $COMP_CWORD -le 1 ] ; then
         COMPREPLY=( $( compgen -W 'get set del rename rename-force copy search
             exist unset info shell --version --help --noplugins --config' \
-                -- "$2" ) )
+                -- "$cur" ) )
     fi
 } &&
 complete -F _yu_yumdb -o filenames yumdb yumdb.py
@@ -254,50 +285,59 @@ complete -F _yu_yumdb -o filenames yumdb yumdb.py
 # repodiff
 _yu_repodiff()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
 
-    case "$3" in
+    case $prev in
         -h|--help|--version|-n|--new|-o|--old|-a|--archlist)
             return 0
             ;;
     esac
 
+    $split && return 0
+
     COMPREPLY=( $( compgen -W '--version --help --new --old --quiet --archlist
-        --size --simple' -- "$2" ) )
+        --size --simple' -- "$cur" ) )
 } &&
 complete -F _yu_repodiff repodiff repodiff.py
 
 # yum-builddep
 _yu_builddep()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
+
+    _yum_complete_baseopts "$cur" "$prev" && return 0
 
-    _yum_complete_baseopts "$2" "$3" && return 0
+    $split && return 0
 
-    if [[ $2 == -* ]] ; then
-        COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null )' -- "$2" ) )
+    if [[ $cur == -* ]] ; then
+        COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null )' -- "$cur" ) )
         return 0
     fi
 
-    COMPREPLY=( $( compgen -f -o plusdirs -X "!*.spec" -- "$2" ) )
-    [[ $2 != */* && $2 != ~* ]] && _yum_list all "$2" 2>/dev/null
+    COMPREPLY=( $( compgen -f -o plusdirs -X "!*.spec" -- "$cur" ) )
+    [[ $cur != */* && $cur != ~* ]] && _yum_list all "$cur" 2>/dev/null
 } &&
 complete -F _yu_builddep -o filenames yum-builddep yum-builddep.py
 
 # debuginfo-install
 _yu_debuginfo_install()
 {
-    COMPREPLY=()
+    local cur prev words=() split=false
+    _yu_init_completion "$2" "$3"
+
+    _yum_complete_baseopts "$cur" "$prev" && return 0
 
-    _yum_complete_baseopts "$2" "$3" && return 0
+    $split && return 0
 
-    if [[ $2 == -* ]] ; then
+    if [[ $cur == -* ]] ; then
         COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null )
-            --no-debuginfo-plugin' -- "$2" ) )
+            --no-debuginfo-plugin' -- "$cur" ) )
         return 0
     fi
 
-    _yum_list all "$2"
+    _yum_list all "$cur"
 } &&
 complete -F _yu_debuginfo_install debuginfo-install debuginfo-install.py
 


More information about the Yum-commits mailing list