blob: 224ea25436ccaebebfe0e4ee6656b62fedfda9b9 (
plain)
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
|
# 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
|