/[soft]/rpm/urpmi/branches/2/urpmi.bash-completion
ViewVC logotype

Contents of /rpm/urpmi/branches/2/urpmi.bash-completion

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4897 - (show annotations) (download)
Fri Jun 8 21:07:33 2012 UTC (11 years, 9 months ago) by tv
File size: 7714 byte(s)
branch

1 # bash completion for urpmi and friends
2 # Copyright (c) 2002-2006 Guillaume Rousse <guillomovitch@mandriva.com>
3 # $Id: urpmi.bash-completion 266536 2010-02-26 21:07:37Z guillomovitch $
4
5 common_options="-q --quiet -v --verbose --debug -h --help --urpmi-root --wait-lock"
6
7 # utility functions
8 _urpmi_get_medias()
9 {
10 medias=( $( urpmq --list-media $1 2>/dev/null \
11 | sed -e 's/(/\\(/g' -e 's/)/\\)/g' -e 's/ /\\ /g' ) )
12 }
13
14 _urpmi_medias()
15 {
16 local medias IFS=$'\t\n'
17 # get medias list
18 _urpmi_get_medias all
19 # return matching ones
20 COMPREPLY=( $( compgen -W '${medias[@]}' -- $cur ) )
21 }
22
23 _urpmi_aliases()
24 {
25 # return list of available aliases
26 COMPREPLY=( $( awk -F: '{print $1}' /etc/urpmi/parallel.cfg 2>/dev/null \
27 | grep "^${cur//\\\\/}" ) )
28 }
29
30 _urpmi_packages()
31 {
32 local options
33
34
35 # find media selection options
36 for (( i=1; i < COMP_CWORD; i++ )); do
37 case "${COMP_WORDS[i]}" in
38 --@\(excludemedia|media\))
39 options="$options ${COMP_WORDS[i]} ${COMP_WORDS[i+1]}"
40 i=$(($i+1))
41 ;;
42 --update)
43 options="$options ${COMP_WORDS[i]}"
44 ;;
45 esac
46 done
47
48 COMPREPLY=( $( compgen -W "$(urpmq $options --list | grep ^$cur )" -- ) )
49 }
50
51 # urpmi completion
52 #
53 _urpmi()
54 {
55 local cur prev options
56
57 COMPREPLY=()
58 cur=`_get_cword`
59 prev=`_get_pword`
60
61 case "$prev" in
62 --media)
63 _urpmi_medias
64 return 0
65 ;;
66 --excludemedia)
67 _urpmi_medias
68 return 0
69 ;;
70 --sortmedia)
71 _urpmi_medias
72 return 0
73 ;;
74 --searchmedia)
75 _urpmi_medias
76 return 0
77 ;;
78 --parallel)
79 _urpmi_aliases
80 return 0
81 ;;
82 --root|--urpmi-root)
83 _filedir -d
84 return 0
85 ;;
86 esac
87
88 if [[ "$cur" == -* ]]; then
89 # return list of available options
90 options="$common_options -a -p -P -y --update --media --excludemedia \
91 --sortmedia --synthesis --auto --auto-select --no-uninstall \
92 --split-level --split-length --fuzzy --buildrequires --install-src \
93 --clean --noclean --parallel --wget --prozilla --curl --limit-rate \
94 --proxy --proxy-user --bug --no-verify-rpm --no-install --test \
95 --excludepath --excludedocs --searchmedia --ignoresize \
96 --ignorearch --strict-arch --wget-options --curl-options \
97 --prozilla-options --rsync-options --resume --retry --skip \
98 --prefer --nolock --more-choices"
99 # add dangereous option for everything else as rurpmi
100 if [[ ${COMP_WORDS[0]} != *rurpmi ]]; then
101 options="$options --root --use-distrib --env --auto-orphans \
102 --replacepkgs --justdb --allow-nodeps --allow-force \
103 --no-suggests --force --noscripts --auto-update --keep \
104 --nokeep --replacefiles --verify-rpm"
105 for (( i=1; i < COMP_CWORD; i++ )); do
106 case ${COMP_WORDS[i]} in
107 ----auto-update)
108 options="$options --no-md5sum \
109 --force-key"
110 ;;
111 esac
112 done
113 fi
114 COMPREPLY=( $( compgen -W "$options" -- $cur ) )
115 else
116 if [[ ${COMP_WORDS[0]} == *rurpmi ]]; then
117 # return available packages only
118 _urpmi_packages
119 else
120 # return available packages (unless clearly a file)
121 # and rpm files
122 if [[ "$cur" != */* ]]; then
123 _urpmi_packages
124 fi
125 _filedir '@(rpm|spec)'
126 fi
127 fi
128 }
129 complete -F _urpmi $filenames urpmi gurpmi rurpmi
130
131 # urpmq completion
132 #
133 _urpmq()
134 {
135 local cur prev
136
137 COMPREPLY=()
138 cur=${COMP_WORDS[COMP_CWORD]}
139 prev=${COMP_WORDS[COMP_CWORD-1]}
140
141 case "$prev" in
142 --media)
143 _urpmi_medias
144 return 0
145 ;;
146 --excludemedia)
147 _urpmi_medias
148 return 0
149 ;;
150 --sortmedia)
151 _urpmi_medias
152 return 0
153 ;;
154 --parallel)
155 _urpmi_nodes
156 return 0
157 ;;
158 --list-media)
159 COMPREPLY=( $( compgen -W 'all update active' -- $cur))
160 return 0
161 ;;
162 esac
163
164 if [[ "$cur" == -* ]]; then
165 # return list of available options
166 COMPREPLY=( $( compgen -W "$common_options -d -u -m -a -c -y -s -i -g \
167 -p -r -f -l --update --media --excludemedia --sortmedia \
168 --synthesis --auto-select --auto-orphans --no-suggests --fuzzy \
169 --keep --nokeep --list --list-url --list-media --list-nodes \
170 --list-aliases --src --sources --provides --requires --obsoletes \
171 --suggests --summary --sourcerpm --force --parallel --wget --curl \
172 --prozilla --changelog --conflicts --proxy --proxy-user --env \
173 --dump-config --whatprovides --whatrequires \
174 --whatrequires-recursive --skip --prefer --use-distrib \
175 --searchmedia --ignorearch" -- $cur))
176 else
177 # return rpm files (can't list available packages anymore)
178 _filedir rpm
179 fi
180 }
181 complete -F _urpmq urpmq
182
183 # urpme completion
184 #
185 _urpme()
186 {
187 local cur prev
188
189 COMPREPLY=()
190 cur=${COMP_WORDS[COMP_CWORD]}
191
192 if [[ "$cur" == -* ]]; then
193 # return list of available options
194 COMPREPLY=( $( compgen -W "$common_options -a --auto --test \
195 --auto-orphans --parallel --justdb --noscripts" -- $cur ) )
196 else
197 # return list of available packages
198 _xfunc rpm _rpm_installed_packages
199 fi
200 }
201 complete -F _urpme urpme
202
203 # urpmf completion
204 #
205 _urpmf()
206 {
207 local cur prev
208
209 COMPREPLY=()
210 cur=${COMP_WORDS[COMP_CWORD]}
211 prev=${COMP_WORDS[COMP_CWORD-1]}
212
213 case "$prev" in
214 --media)
215 _urpmi_medias
216 return 0
217 ;;
218 --excludemedia)
219 _urpmi_medias
220 return 0
221 ;;
222 --sortmedia)
223 _urpmi_medias
224 return 0
225 ;;
226 esac
227
228 if [[ "$cur" == -* ]]; then
229 # return list of available options
230 COMPREPLY=( $( compgen -W "$common_options -i -f -e -a -o -m --update \
231 --media --excludemedia --sortmedia --synthesis --use-distrib \
232 --uniq --name --group --license --size --epoch --summary \
233 --description --sourcerpm --packager--buildhost --url --provides \
234 --requires --suggests --files --conflicts --obsoletes --env" \
235 -- $cur ) )
236 else
237 # return available files
238 _filedir
239 fi
240 }
241 complete -F _urpmf urpmf
242
243 # urpmi.update completion
244 #
245 _urpmi_update()
246 {
247 local cur
248
249 COMPREPLY=()
250 cur=${COMP_WORDS[COMP_CWORD]}
251
252 if [[ "$cur" == -* ]]; then
253 # return list of available options
254 COMPREPLY=( $( compgen -W "$common_options -a -f --wget --prozilla \
255 --curl --limit-rate --proxy --proxy-user --update --ignore \
256 --no-ignore --no-md5sum --force-key --norebuild" -- $cur))
257 else
258 # return list of available media
259 _urpmi_medias
260 fi
261 }
262 complete -F _urpmi_update urpmi.update
263
264 # urpmi.addmedia completion
265 #
266 _urpmi_addmedia()
267 {
268 local cur i args
269
270 COMPREPLY=()
271 cur=${COMP_WORDS[COMP_CWORD]}
272
273 if [[ "$cur" == -* ]]; then
274 # return list of available options
275 COMPREPLY=( $( compgen -W "$common_options -f --wget --curl --prozilla \
276 --limit-rate --proxy --proxy-user --update --raw \
277 --probe-synthesis --probe-hdlist --probe-rpms --no-probe --distrib \
278 --env --version --arch --virtual --norebuild --nopubkey" -- $cur ) )
279 else
280 # count number of mandatory args given sofar
281 args=$COMP_CWORD
282 for (( i=1; i < COMP_CWORD; i++ )); do
283 if [[ "${COMP_WORDS[i]}" == -* ]]; then
284 args=$(($args-1))
285 fi
286 done
287 case $args in
288 1)
289 # return list of available media
290 _urpmi_medias
291 ;;
292 2)
293 # return list of available protocols
294 COMPREPLY=( $( compgen -W 'file:// http:// \
295 ftp:// removable:// ssh:// \
296 rsync://' -- $cur ) )
297 ;;
298 3)
299 # return word "with"
300 COMPREPLY=( 'with' )
301 ;;
302 esac
303 fi
304 }
305 complete -F _urpmi_addmedia urpmi.addmedia
306
307 # urpmi.removemedia completion
308 #
309 _urpmi_removemedia()
310 {
311 local cur
312
313 COMPREPLY=()
314 cur=${COMP_WORDS[COMP_CWORD]}
315
316 if [[ "$cur" == -* ]]; then
317 # if word begins with a dash, return list of available options
318 COMPREPLY=( $( compgen -W "$common_options -a -y" -- $cur ) )
319 else
320 # elsewhere, return list of available media
321 _urpmi_medias
322 fi
323
324 }
325 complete -F _urpmi_removemedia urpmi.removemedia

  ViewVC Help
Powered by ViewVC 1.1.30