diff --git a/contrib/_yum b/contrib/_yum index b2283078..c72def9a 100644 --- a/contrib/_yum +++ b/contrib/_yum @@ -3,174 +3,152 @@ have yum && { _yum_list() { - if [[ "$1" == all ]] ; then - # Try to strip in between headings like "Available Packages" - # This will obviously only work for English :P - COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ - sed -ne '/^\(Available\|Installed\|Updated\) /d' \ - -e 's/[[:space:]].*//p' ) ) - else - # Drop first line (e.g. "Updated Packages") - COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ - sed -ne 1d -e 's/[[:space:]].*//p' ) ) - fi + if [[ "$1" == all ]] ; then + # Try to strip in between headings like "Available Packages" + # This will obviously only work for English :P + COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ + sed -ne '/^\(Available\|Installed\|Updated\) /d' \ + -e 's/[[:space:]].*//p' ) ) + else + # Drop first line (e.g. "Updated Packages") + COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ + sed -ne 1d -e 's/[[:space:]].*//p' ) ) + fi } _yum_repolist() { - # -d 0 causes repolist to output nothing as of yum 3.2.22: - # http://yum.baseurl.org/ticket/83 - # Drop first ("repo id repo name") and last ("repolist: ...") rows - yum --noplugins -C repolist $1 2>/dev/null | \ - sed -ne '/^repo\(\s\+id\|list:\)/d' -e 's/[[:space:]].*//p' + # -d 0 causes repolist to output nothing as of yum 3.2.22: + # http://yum.baseurl.org/ticket/83 + # Drop first ("repo id repo name") and last ("repolist: ...") rows + yum --noplugins -C repolist $1 2>/dev/null | \ + sed -ne '/^repo\(\s\+id\|list:\)/d' -e 's/[[:space:]].*//p' } _yum_plugins() { - command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null \ - | sed -ne 's|.*/\([^./]*\)\.py[co]\?$|\1|p' | sort -u + command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null \ + | sed -ne 's|.*/\([^./]*\)\.py[co]\?$|\1|p' | sort -u } _yum() { - local cur prev special split=false + local cur prev special split=false - COMPREPLY=() - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} - for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do - if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then - special=${COMP_WORDS[i]} - fi - done - - if [ -n "$special" ]; then - # TODO: install|update|upgrade should not match *src.rpm - if [[ "$cur" == */* && "$special" == @(deplist|install|update|upgrade) ]]; then - _filedir rpm - return 0 - fi - case $special in - install) - _yum_list available - return 0 - ;; - deplist|info) - _yum_list all - return 0 - ;; - upgrade|update) - _yum_list updates - return 0 - ;; - remove|erase) - # _rpm_installed_packages is not arch-qualified - _yum_list installed - return 0 - ;; - esac + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then + special=${COMP_WORDS[i]} fi + done - _split_longopt && split=true + if [ -n "$special" ]; then + # TODO: install|update|upgrade should not match *src.rpm + if [[ "$cur" == */* && "$special" == @(deplist|install|update|upgrade) ]]; then + _filedir rpm + return 0 + fi + case $special in + install) + _yum_list available + return 0 + ;; + deplist|info) + _yum_list all + return 0 + ;; + upgrade|update) + _yum_list updates + return 0 + ;; + remove|erase) + # _rpm_installed_packages is not arch-qualified + _yum_list installed + return 0 + ;; + esac + fi - case $prev in - list) - COMPREPLY=( $( compgen -W 'all available updates \ + _split_longopt && split=true + + case $prev in + list) + COMPREPLY=( $( compgen -W 'all available updates \ installed extras obsoletes recent' -- $cur ) ) - ;; - clean) - COMPREPLY=( $( compgen -W 'packages headers metadata \ + ;; + clean) + COMPREPLY=( $( compgen -W 'packages headers metadata \ cache dbcache all' -- $cur ) ) - ;; - repolist) - COMPREPLY=( $( compgen -W 'all enabled disabled' -- $cur ) ) - ;; - localinstall|localupdate) - # TODO: should not match *src.rpm - _filedir rpm - ;; - -d|-e) - COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- $cur ) ) - ;; - -c) - _filedir - ;; - --installroot) - _filedir -d - ;; - --enablerepo) - COMPREPLY=( $( compgen -W '$( _yum_repolist disabled )' -- $cur ) ) - ;; - --disablerepo) - COMPREPLY=( $( compgen -W '$( _yum_repolist enabled )' -- $cur ) ) - ;; - --disableexcludes) - COMPREPLY=( $( compgen -W '$( _yum_repolist all ) \ - all main' -- $cur ) ) - ;; - --enableplugin|--disableplugin) - COMPREPLY=( $( compgen -W '$( _yum_plugins )' -- $cur )) - ;; - --color) - COMPREPLY=( $( compgen -W 'always auto never' -- $cur )) - ;; - -R|-x|--exclude) - # argument required but no completions available - return 0 - ;; - -h|--help|--version) - # no other options useful with these - return 0 - ;; - *) - COMPREPLY=( $( compgen -W 'install update \ + ;; + repolist) + COMPREPLY=( $( compgen -W 'all enabled disabled' -- $cur ) ) + ;; + localinstall|localupdate) + # TODO: should not match *src.rpm + _filedir rpm + ;; + -d|-e) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- $cur ) ) + ;; + -c) + _filedir + ;; + --installroot) + _filedir -d + ;; + --enablerepo) + COMPREPLY=( $( compgen -W '$( _yum_repolist disabled )' -- $cur ) ) + ;; + --disablerepo) + COMPREPLY=( $( compgen -W '$( _yum_repolist enabled )' -- $cur ) ) + ;; + --disableexcludes) + COMPREPLY=( $( compgen -W '$( _yum_repolist all ) all main' \ + -- $cur ) ) + ;; + --enableplugin|--disableplugin) + COMPREPLY=( $( compgen -W '$( _yum_plugins )' -- $cur )) + ;; + --color) + COMPREPLY=( $( compgen -W 'always auto never' -- $cur )) + ;; + -R|-x|--exclude) + # argument required but no completions available + return 0 + ;; + -h|--help|--version) + # no other options useful with these + return 0 + ;; + *) + COMPREPLY=( $( compgen -W 'install update \ check-update upgrade remove erase list info \ provides whatprovides clean makecache \ groupinstall groupupdate grouplist \ groupremove groupinfo search shell resolvedep \ localinstall localupdate deplist repolist \ help' -- $cur ) ) - ;; - esac + ;; + esac - $split && return 0 + $split && return 0 - if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-h --help -t --tolerant -C -c -R \ + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help -t --tolerant -C -c -R \ -d --showduplicates -e -q --quiet -v --verbose -y \ --version --installroot --enablerepo --disablerepo -x \ --exclude --disableexcludes --obsoletes --noplugins \ --nogpgcheck --disableplugin --enableplugin \ --skip-broken --color' -- $cur ) ) - return 0 - fi + return 0 + fi } } && complete -F _yum $filenames yum -# yum-arch(8) completion -# -have yum-arch && -_yum_arch() -{ - local cur - COMPREPLY=() - cur=`_get_cword` - - case "$cur" in - -*) - COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- $cur ) ) - ;; - *) - _filedir -d - ;; - esac - - return 0 -} && -complete -F _yum_arch $filenames yum-arch - # Local variables: # mode: shell-script # sh-basic-offset: 4