Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Mandrake urpmi suite completion
- X-seq: zsh-workers 16220
- From: Borsenkow Andrej <Andrej.Borsenkow@xxxxxxxxxxxxxx>
- To: ZSH Workers Mailing List <zsh-workers@xxxxxxxxxx>
- Subject: Mandrake urpmi suite completion
- Date: Sun, 04 Nov 2001 00:59:26 +0300
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <3BE45087.707@xxxxxxxxxxxxxx> <1011103202735.ZM8656@xxxxxxxxxxxxxxxxxxxxxxx>
Bart Schaefer wrote:
Unless I'm missing something:
elif compset -P removable_; then
compadd -S '' -- cdrom_ floppy_ && return 0
Really :)
O.K. attached is completion for (part of) urpmi programs on Mandrake.
urpmi is similar to apt on Debian - you can define install media
(local/removable/ftp/http) and have a list of all available packages
with automatic dependency resolution. It does not include completion for
urpmf or urpmq because I do not quite understand what they are doing
besides teh simplest usage.
Should it go into Completion/Mandrake?
Suggestions for it are welcome. Chmouel, what about adding it to Zsh
RPM? We need update for 4.0.4 anyway.
-andrej
#compdef urpmi urpmi.addmedia urpmi.removemedia urpmi.update
local state context line
typeset -A opt_args
_urpmi_cache_policy() {
[[ -e "$1" && -e /var/lib/urpmi/depslist.ordered && \
"$1" -nt /var/lib/urpmi/depslist.ordered ]] && return 1
return 0
}
case "$service" in
urpmi.addmedia )
_arguments -A '-*' \
"-update[mark as update media]" \
":name of media: " \
":media URL:->media_url" \
": :(with)" \
":relative path to hdlist file: " \
&& return 0
;;
urpmi.removemedia )
_arguments -A '-*' \
"(:)-a[select all media]" \
"(-a)"{,\*}": :->urpmi_media" \
&& return 0
;;
urpmi.update )
_arguments -A '-*' \
"(:)-a[select all non-removable media]" \
"-c[clean /var/cache/urpmi/headers on exit]" \
"*-f[force rebuild of hdlist or base files (if repeated)]" \
"(-a)"{,\*}": :->urpmi_media" \
&& return 0
;;
urpmi )
_arguments -A '-*' \
"(: -)--help[print usage information]" \
"(--help)--update[use only update media]" \
"(--help)--auto[do not ask any questions]" \
"(--help)--auto-select[select the pakages to update]" \
"(--help)--force[preceed even when some packages do not exist]" \
"(--help)--best-output[automatically select text or X interface]" \
"(--help)-a[select all packages matching command line]" \
"(--help -m -M)-m[choose minimum closure of requires (default)]" \
"(--help -m -M)-M[choose maximum closure of requires]" \
"(--help)-c[choose complete method for resolving requires]" \
"(--help)-p[allow search in provides]" \
"(--help -q -v)-q[be quiet]" \
"(--help -q -v)-v[verbose mode]" \
"(--help)"{,\*}": :->urpmi_rpms" \
&& return 0
;;
esac
case "$state" in
media_url )
if compset -P file://; then
_files -W / -/ && return 0
elif compset -P removable_cdrom_\?://; then
_files -/ && return 0
elif compset -P removable_; then
compadd -S "" -- cdrom_ floppy_ && return 0
elif [[ -prefix '(ftp|http):' ]]; then
_url && return 0
else
compadd -- file:// http:// ftp:// removable_
fi
;;
urpmi_media )
local source media brace ret=1
while read source media brace; do
[[ "$brace" != "{" ]] && continue
_wanted urpmi_media expl 'available media' \
compadd -- "$source"
ret=0
done < /etc/urpmi/urpmi.cfg
return "$ret"
;;
urpmi_rpms )
local pkg foo expl
local -a pkgs
if [[ -r /var/lib/urpmi/depslist.ordered ]]; then
if _cache_invalid _urpmi_rpms || ! _retrieve_cache _urpmi_rpms; then
while read pkg foo; do
[[ "$pkg" == (#b)(*)-[^-]##-[^-]## ]] && {
pkgs[$#pkgs+1]=("$match[1]")
}
done < /var/lib/urpmi/depslist.ordered
_store_cache _urpmi_rpms pkgs
fi
_wanted urpmi_rpms expl 'RPM to install' \
compadd -a pkgs && return 0
fi
;;
esac
return 1
Messages sorted by:
Reverse Date,
Date,
Thread,
Author