1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
# yum(8) completion -*- shell-script -*-
# Use of this file is deprecated. Upstream completion is available in
# yum > 3.2.25, use that instead.
_comp_cmd_yum__list()
{
if [[ $1 == all ]]; then
# Try to strip in between headings like "Available Packages"
# This will obviously only work for English :P
_comp_split 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")
_comp_split COMPREPLY "$(yum -d 0 -C list "$1" "$cur*" 2>/dev/null |
command sed -ne 1d -e 's/[[:space:]].*//p')"
fi
}
_comp_cmd_yum__compgen_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
_comp_compgen_split -- "$(
yum --noplugins -C repolist "$1" 2>/dev/null |
command sed -ne '/^repo[[:space:]]\{1,\}id/d' -e '/^repolist:/d' \
-e 's/[[:space:]].*//p'
)"
}
_comp_cmd_yum__compgen_plugins()
{
local -a files
_comp_expand_glob files '/usr/lib/yum-plugins/*.py{,c,o}' || return
_comp_compgen -U files split -- "$(
printf '%s\n' "${files[@]}" |
command sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u
)"
}
_comp_cmd_yum()
{
local cur prev words cword was_split comp_args
_comp_initialize -s -- "$@" || return
local special="" i
for ((i = 1; i < cword; i++)); do
if [[ ${words[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then
special=${words[i]}
break
fi
done
if [[ $special ]]; then
# TODO: install|update|upgrade should not match *src.rpm
if [[ $cur == @(*/|[.~])* &&
$special == @(deplist|install|update|upgrade) ]]; then
_comp_compgen_filedir rpm
return
fi
case $special in
install)
_comp_cmd_yum__list available
return
;;
deplist | info)
_comp_cmd_yum__list all
return
;;
upgrade | update)
_comp_cmd_yum__list updates
return
;;
remove | erase)
# _comp_xfunc_rpm_installed_packages is not arch-qualified
_comp_cmd_yum__list installed
return
;;
esac
fi
case $prev in
list)
_comp_compgen -- -W 'all available updates installed extras
obsoletes recent'
;;
clean)
_comp_compgen -- -W 'packages headers metadata cache dbcache all'
;;
repolist)
_comp_compgen -- -W 'all enabled disabled'
;;
localinstall | localupdate)
# TODO: should not match *src.rpm
_comp_compgen_filedir rpm
;;
-d | -e)
_comp_compgen -- -W '{0..10}'
;;
-c)
_comp_compgen_filedir
;;
--installroot)
_comp_compgen_filedir -d
;;
--enablerepo)
_comp_cmd_yum__compgen_repolist disabled
;;
--disablerepo)
_comp_cmd_yum__compgen_repolist enabled
;;
--disableexcludes)
_comp_cmd_yum__compgen_repolist all
_comp_compgen -a -- -W "all main"
;;
--enableplugin | --disableplugin)
_comp_cmd_yum__compgen_plugins
;;
--color)
_comp_compgen -- -W 'always auto never'
;;
-R | -x | --exclude)
# argument required but no completions available
return
;;
-h | --help | --version)
# no other options useful with these
return
;;
*)
_comp_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'
;;
esac
[[ $was_split ]] && return
if [[ $cur == -* ]]; then
_comp_compgen_help
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
fi
} &&
complete -F _comp_cmd_yum yum
# ex: filetype=sh
|