zsh-workers
 help / color / mirror / code / Atom feed
From: Borsenkow Andrej <Andrej.Borsenkow@mow.siemens.ru>
To: "'Oliver Kiddle'" <okiddle@yahoo.co.uk>
Cc: "'ZSH Workers Mailing List'" <zsh-workers@sunsite.dk>
Subject: PATCH: RE: Mandrake urpmi suite completion
Date: Wed, 14 Nov 2001 17:32:15 +0300	[thread overview]
Message-ID: <000201c16d19$27f25f10$21c9ca95@mow.siemens.ru> (raw)
In-Reply-To: <3BE6772C.AD3447B6@yahoo.co.uk>

[-- Attachment #1: Type: text/plain, Size: 489 bytes --]

> >             "(--help)--auto-select[select the pakages to update]" \
> 
> You've got a typo here:                          ^^^
>

fixed.
 

> 
> Do you mean _urls there?
>

Yes, fixed.
 
> >         else
> >             compadd -- file:// http:// ftp:// removable_
> 
> An _wanted with description would be nice here (and similarly further
> above).
> 

Added. Also modified to handle new urpmi-2.0+ removable format.

-andrej

Patch attached, I commit when I get article number back.


[-- Attachment #2: zsh-urpmi.diff --]
[-- Type: application/octet-stream, Size: 3836 bytes --]

Index: Completion/Mandrake/Command/_urpmi
===================================================================
RCS file: _urpmi
diff -N _urpmi
--- /dev/null	Thu May 24 22:33:05 2001
+++ _urpmi	Wed Nov 14 06:26:42 2001
@@ -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
+

      parent reply	other threads:[~2001-11-14 14:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-03 20:16 supress suffix (blank) in completion menu (selection) Borsenkow Andrej
2001-11-03 20:27 ` Bart Schaefer
2001-11-03 21:59   ` Mandrake urpmi suite completion Borsenkow Andrej
2001-11-03 22:35     ` Bart Schaefer
2001-11-05 11:25     ` Oliver Kiddle
2001-11-10 12:50       ` Chmouel Boudjnah
2001-11-14 14:32       ` Borsenkow Andrej [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000201c16d19$27f25f10$21c9ca95@mow.siemens.ru' \
    --to=andrej.borsenkow@mow.siemens.ru \
    --cc=okiddle@yahoo.co.uk \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).