# yum(8) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # yum > 3.2.25, use that instead. proc _yum_list { if [[ "$1" == all ]] { # Try to strip in between headings like "Available Packages" # This will obviously only work for English :P setvar COMPREPLY = ''( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \ -e 's/[[:space:]].*//p' ) ) } else { # Drop first line (e.g. "Updated Packages") setvar COMPREPLY = ''( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ sed -ne 1d -e 's/[[:space:]].*//p' ) ) } } proc _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\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p' } proc _yum_plugins { command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null \ | sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u } proc _yum { local cur prev words cword split _init_completion -s || return local special i for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then special=${words[i]} fi done if [[ -n $special ]] { # TODO: install|update|upgrade should not match *src.rpm if [[ "$cur" == @(*/|[.~])* && \ "$special" == @(deplist|install|update|upgrade) ]] { _filedir rpm return 0 } case (special) { 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 } } } case (prev) { list { setvar COMPREPLY = ''( $( compgen -W 'all available updates installed extras obsoletes recent' -- "$cur" ) ) } clean { setvar COMPREPLY = ''( $( compgen -W 'packages headers metadata cache dbcache all' -- "$cur" ) ) } repolist { setvar COMPREPLY = ''( $( compgen -W 'all enabled disabled' -- "$cur" ) ) } localinstall|localupdate { # TODO: should not match *src.rpm _filedir rpm } -d|-e { setvar COMPREPLY = ''( $( compgen -W '{0..10}' -- "$cur" ) ) } -c { _filedir } --installroot { _filedir -d } --enablerepo { setvar COMPREPLY = ''( $( compgen -W '$( _yum_repolist disabled )' \ -- "$cur" ) ) } --disablerepo { setvar COMPREPLY = ''( $( compgen -W '$( _yum_repolist enabled )' -- "$cur" ) ) } --disableexcludes { setvar COMPREPLY = ''( $( compgen -W '$( _yum_repolist all ) all main' \ -- "$cur" ) ) } --enableplugin|--disableplugin { setvar COMPREPLY = ''( $( compgen -W '$( _yum_plugins )' -- "$cur" ) ) } --color { setvar 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 } * { setvar 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" ) ) } } $split && return 0 if [[ "$cur" == -* ]] { setvar COMPREPLY = ''( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return 0 } } && complete -F _yum yum # ex: ts=4 sw=4 et filetype=sh