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

Contents of /rpm/urpmi/trunk/urpmi.bash-completion

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5345 - (show annotations) (download)
Sun Aug 12 11:40:35 2012 UTC (11 years, 8 months ago) by guillomovitch
File size: 7737 byte(s)
add --not-available in options list
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 --not-available \
169 --no-suggests --fuzzy \
170 --keep --nokeep --list --list-url --list-media --list-nodes \
171 --list-aliases --src --sources --provides --requires --obsoletes \
172 --suggests --summary --sourcerpm --force --parallel --wget --curl \
173 --prozilla --changelog --conflicts --proxy --proxy-user --env \
174 --dump-config --whatprovides --whatrequires \
175 --whatrequires-recursive --skip --prefer --use-distrib \
176 --searchmedia --ignorearch" -- $cur))
177 else
178 # return rpm files (can't list available packages anymore)
179 _filedir rpm
180 fi
181 }
182 complete -F _urpmq urpmq
183
184 # urpme completion
185 #
186 _urpme()
187 {
188 local cur prev
189
190 COMPREPLY=()
191 cur=${COMP_WORDS[COMP_CWORD]}
192
193 if [[ "$cur" == -* ]]; then
194 # return list of available options
195 COMPREPLY=( $( compgen -W "$common_options -a --auto --test \
196 --auto-orphans --parallel --justdb --noscripts" -- $cur ) )
197 else
198 # return list of available packages
199 _xfunc rpm _rpm_installed_packages
200 fi
201 }
202 complete -F _urpme urpme
203
204 # urpmf completion
205 #
206 _urpmf()
207 {
208 local cur prev
209
210 COMPREPLY=()
211 cur=${COMP_WORDS[COMP_CWORD]}
212 prev=${COMP_WORDS[COMP_CWORD-1]}
213
214 case "$prev" in
215 --media)
216 _urpmi_medias
217 return 0
218 ;;
219 --excludemedia)
220 _urpmi_medias
221 return 0
222 ;;
223 --sortmedia)
224 _urpmi_medias
225 return 0
226 ;;
227 esac
228
229 if [[ "$cur" == -* ]]; then
230 # return list of available options
231 COMPREPLY=( $( compgen -W "$common_options -i -f -e -a -o -m --update \
232 --media --excludemedia --sortmedia --synthesis --use-distrib \
233 --uniq --name --group --license --size --epoch --summary \
234 --description --sourcerpm --packager--buildhost --url --provides \
235 --requires --suggests --files --conflicts --obsoletes --env" \
236 -- $cur ) )
237 else
238 # return available files
239 _filedir
240 fi
241 }
242 complete -F _urpmf urpmf
243
244 # urpmi.update completion
245 #
246 _urpmi_update()
247 {
248 local cur
249
250 COMPREPLY=()
251 cur=${COMP_WORDS[COMP_CWORD]}
252
253 if [[ "$cur" == -* ]]; then
254 # return list of available options
255 COMPREPLY=( $( compgen -W "$common_options -a -f --wget --prozilla \
256 --curl --limit-rate --proxy --proxy-user --update --ignore \
257 --no-ignore --no-md5sum --force-key --norebuild" -- $cur))
258 else
259 # return list of available media
260 _urpmi_medias
261 fi
262 }
263 complete -F _urpmi_update urpmi.update
264
265 # urpmi.addmedia completion
266 #
267 _urpmi_addmedia()
268 {
269 local cur i args
270
271 COMPREPLY=()
272 cur=${COMP_WORDS[COMP_CWORD]}
273
274 if [[ "$cur" == -* ]]; then
275 # return list of available options
276 COMPREPLY=( $( compgen -W "$common_options -f --wget --curl --prozilla \
277 --limit-rate --proxy --proxy-user --update --raw \
278 --probe-synthesis --probe-hdlist --probe-rpms --no-probe --distrib \
279 --env --version --arch --virtual --norebuild --nopubkey" -- $cur ) )
280 else
281 # count number of mandatory args given sofar
282 args=$COMP_CWORD
283 for (( i=1; i < COMP_CWORD; i++ )); do
284 if [[ "${COMP_WORDS[i]}" == -* ]]; then
285 args=$(($args-1))
286 fi
287 done
288 case $args in
289 1)
290 # return list of available media
291 _urpmi_medias
292 ;;
293 2)
294 # return list of available protocols
295 COMPREPLY=( $( compgen -W 'file:// http:// \
296 ftp:// removable:// ssh:// \
297 rsync://' -- $cur ) )
298 ;;
299 3)
300 # return word "with"
301 COMPREPLY=( 'with' )
302 ;;
303 esac
304 fi
305 }
306 complete -F _urpmi_addmedia urpmi.addmedia
307
308 # urpmi.removemedia completion
309 #
310 _urpmi_removemedia()
311 {
312 local cur
313
314 COMPREPLY=()
315 cur=${COMP_WORDS[COMP_CWORD]}
316
317 if [[ "$cur" == -* ]]; then
318 # if word begins with a dash, return list of available options
319 COMPREPLY=( $( compgen -W "$common_options -a -y" -- $cur ) )
320 else
321 # elsewhere, return list of available media
322 _urpmi_medias
323 fi
324
325 }
326 complete -F _urpmi_removemedia urpmi.removemedia

  ViewVC Help
Powered by ViewVC 1.1.30