summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Mandrake/Command/_urpmi111
2 files changed, 116 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 9a7629cd0..ea16180e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-11-14 Andrej Borsenkow <bor@zsh.org>
+
+ * 16247: Completion/Mandrake/Command/_urpmi: completion
+ for Mandrake urpmi command suit.
+
2001-11-09 Oliver Kiddle <opk@zsh.org>
* 16228: Src/builtin.c, Doc/Zsh/builtins.yo: allow widths
diff --git a/Completion/Mandrake/Command/_urpmi b/Completion/Mandrake/Command/_urpmi
new file mode 100644
index 000000000..cbce5fb73
--- /dev/null
+++ b/Completion/Mandrake/Command/_urpmi
@@ -0,0 +1,111 @@
+#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)--allow-medium-change[allow change of removable media]" \
+ "(--help)--auto[do not ask any questions]" \
+ "(--help)--auto-select[select the packages 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
+ local -a devices
+ locale dev foo
+ while read dev foo; do
+ [[ "$dev" != none ]] && devices=($devices ${dev#/dev/})
+ done < /etc/fstab
+ if [[ "$(rpm -q urpmi)" == urpmi-1.* ]]; then
+ _wanted urpmi_device expl 'device for removable media' \
+ compadd -s _ -S "" -a devices && return 0
+ else
+ _wanted urpmi_device expl 'device for removable media' \
+ compadd -s :// -S "" -a devices && return 0
+ fi
+ elif [[ -prefix '(ftp|http)://' ]]; then
+ _urls && return 0
+ else
+ _wanted urpmi_media_type expl 'type of media' \
+ 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
+