# 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 setglobal 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") setglobal 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 { var cur = '', prev = '', words = '', cword = '', split = '' _init_completion -s || return var 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 } match $special { with install _yum_list available return 0 with deplist|info _yum_list all return 0 with upgrade|update _yum_list updates return 0 with remove|erase # _rpm_installed_packages is not arch-qualified _yum_list installed return 0 } } match $prev { with list setglobal COMPREPLY = '( '$( compgen -W 'all available updates installed extras obsoletes recent' -- "$cur" ) ) with clean setglobal COMPREPLY = '( '$( compgen -W 'packages headers metadata cache dbcache all' -- "$cur" ) ) with repolist setglobal COMPREPLY = '( '$( compgen -W 'all enabled disabled' -- "$cur" ) ) with localinstall|localupdate # TODO: should not match *src.rpm _filedir rpm with -d|-e setglobal COMPREPLY = '( '$( compgen -W '{0..10}' -- "$cur" ) ) with -c _filedir with --installroot _filedir -d with --enablerepo setglobal COMPREPLY = '( '$( compgen -W '$( _yum_repolist disabled )' \ -- "$cur" ) ) with --disablerepo setglobal COMPREPLY = '( '$( compgen -W '$( _yum_repolist enabled )' -- "$cur" ) ) with --disableexcludes setglobal COMPREPLY = '( '$( compgen -W '$( _yum_repolist all ) all main' \ -- "$cur" ) ) with --enableplugin|--disableplugin setglobal COMPREPLY = '( '$( compgen -W '$( _yum_plugins )' -- "$cur" ) ) with --color setglobal COMPREPLY = '( '$( compgen -W 'always auto never' -- "$cur" ) ) with -R|-x|--exclude # argument required but no completions available return 0 with -h|--help|--version # no other options useful with these return 0 with * setglobal 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" == -* ]] { setglobal 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