# yum(8) completion -*- shell-script -*- # Use of this file is deprecated. Upstream completion is available in # yum > 3.2.25, use that instead. _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 | command sed -ne '/^Available /d' -e '/^Installed /d' -e '/^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 | command 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 | command sed -ne '/^repo\s\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p' } _yum_plugins() { command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null | command sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u } _yum() { local cur prev words cword split _init_completion -s || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then special=${words[i]} break fi done if [[ -v special ]]; then # TODO: install|update|upgrade should not match *src.rpm if [[ $cur == @(*/|[.~])* && \ $special == @(deplist|install|update|upgrade) ]]; then _filedir rpm return fi case $special in install) _yum_list available return ;; deplist | info) _yum_list all return ;; upgrade | update) _yum_list updates return ;; remove | erase) # _rpm_installed_packages is not arch-qualified _yum_list installed return ;; esac fi case $prev in list) COMPREPLY=($(compgen -W 'all available updates installed extras obsoletes recent' -- "$cur")) ;; 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..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 ;; -h | --help | --version) # no other options useful with these return ;; *) 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 $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _yum yum # ex: filetype=sh