zsh-workers
 help / color / mirror / code / Atom feed
From: Borsenkow Andrej <Andrej.Borsenkow@mow.siemens.ru>
To: "'Bart Schaefer'" <schaefer@brasslantern.com>, zsh-workers@sunsite.dk
Subject: RE: _values does not quote inserted matches
Date: Fri, 19 Apr 2002 12:37:22 +0400	[thread overview]
Message-ID: <001501c1e77d$6e0a94c0$1fc1f2a3@mow.siemens.ru> (raw)
In-Reply-To: <1020416160723.ZM10203@candle.brasslantern.com>

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

> It turned out to be an extraneous `local expl' in the version of
_urpmi
> that I do have:
> 
> @@ -92,7 +92,7 @@
>  	    done < /etc/urpmi/urpmi.cfg
>  	;;
>  	urpmi_rpms )
> -	    local pkg foo expl
> +	    local pkg foo
>  	    local -a pkgs
>  	    local -a synthesis
>  	    synthesis=(/var/lib/urpmi/synthesis.*(N))
> 
> Andrej, please fix that when you're committing your other changes.
> 

Here is updated version. It relies on recent _values fixes. The
completion is correct for Mandrake 8.2. If you say O.K it will go in
both head and 4.0.

I'd like to use common with _rpm cache and functions to get list of
installed RPMs, but _rpm is one large function and I am reluctant to
split it (I remember somebody was against it, but forgot reasons).

-andrej


[-- Attachment #2: _urpmi --]
[-- Type: application/octet-stream, Size: 6065 bytes --]

#compdef urpme urpmi urpmi.addmedia urpmi.removemedia urpmi.update urpmq

_urpmi_cache_policy() {
    local -a synthesis
    local i
    synthesis=(/var/lib/urpmi/synthesis.*)
    for i in $synthesis; do
	[[ -e "$1" && -e "$i" && "$1" -nt "$i" ]] && return 1
    done
    return 0
}
    
_urpmi_media() {
    local source media brace expl
    local -a all_sources

    while read source media brace; do
	[[ "$brace" != "{" ]] && continue
	all_sources=("$all_sources[@]" $source)
    done < /etc/urpmi/urpmi.cfg

    _values -s , 'urpmi media' "$all_sources[@]"

}

_urpmi_rpms() {
    local pkg ret=1 expl
    local -a pkgs
    local -a synthesis

    synthesis=(/var/lib/urpmi/synthesis.*(N))
    (( $#synthesis > 0 )) && {
	if _cache_invalid _urpmi_rpms || ! _retrieve_cache _urpmi_rpms; then
	    pkgs=($(zcat $synthesis | \
		 grep @info@ | cut -d @ -f 3 | sed -e 's/\.[^.]*$//'))
	    _store_cache _urpmi_rpms pkgs
	fi
    }
    (( $#pkgs > 0 )) && \
	_wanted urpmi_rpms expl 'urpmi RPMs to install' \
	    compadd "$@" -a pkgs && ret=0

    _wanted urpmi_files expl 'RPM files to install' \
	_files "$@" -g '*.(#i)rpm' && ret=0

    _wanted urpmi_source_files expl 'source RPM files to install' \
	_files "$@" -g '*.(#i)src.rpm' && ret=0

    return $ret
}

_urpmi_media_url() {
    local expl ret=1

    if compset -P file:// || compset -P removable://; then
	_files "$@" -W / -/ && ret=0
    elif [[ -prefix '(ftp|http)://' ]]; then
	_urls "$@" && ret=0
    else
	_wanted urpmi_media_type expl 'type of media' \
	    compadd "$@" -- file:// http:// ftp:// removable:// && ret=0
    fi

    return $ret
}

_urpme_package() {
    local -a _rpms
    _rpms=( $(_call_program packages rpm -qa 2>/dev/null) )
    compadd "$@" -a -- _rpms
}

_urpmi() {
    local state context line ret=1
    typeset -A opt_args

    case "$service" in
	urpme )
	    _arguments -A '-*' \
		"--auto[do not ask any question]" \
		"-a[find all matches]" \
		": :_urpme_package"
	;;
	urpmi.addmedia )
	    _arguments -A '-*' \
		"(--wget)--curl[use curl to retrieve distant files]" \
		"(:)--distrib[automatically create all media from an installation medium]:media URL:_urpmi_media_url" \
		"--update[mark as update media]" \
		"(--curl)--wget[use wget to retrieve distant files]" \
		"-c[clean headers cache directory]" \
		"-f[force generation of hdlist files]" \
		"-h[try to find and use synthesis or hdlist file]" \
		"(--distrib):name of media: " \
		"(--distrib):media URL:_urpmi_media_url" \
		"(--distrib): :(with)" \
		"(--distrib):relative path to hdlist file: " \
	     && ret=0
	;;
	urpmi.removemedia )
	    _arguments -A '-*' \
		"(:)-a[select all media]" \
		"(-a)"{,\*}": :_urpmi_media" \
	     && ret=0
	;;
	urpmi.update )
	    _arguments -A '-*' \
		"(--wget)--curl[use curl to retrieve distant files]" \
		"(--curl)--wget[use wget to retrieve distant files]" \
		"(:)-a[select all non-removable media]" \
		"-c[clean /var/cache/urpmi/headers on exit]" \
		"-d[force complete computation of depslist.ordered file]" \
		"*-f[force generation of hdlist files]" \
		"(-a)"{,\*}": :_urpmi_media" \
	     && ret=0
	;;
	urpmi )
	    _arguments -A '-*' \
		"(: -)--help[print usage information]" \
		"(--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 -X)--best-output[automatically select text or X interface]" \
		"(--help)--complete[use parsehdlist server to complete selection]" \
		"(--help --wget)--curl[use curl to retrieve distant files]" \
		"(--help)--force[proceed even when some packages do not exist]" \
		"(--help --fuzzy -z)"{--fuzzy,-y}"[return all matches even if exact match exists]" \
		"(--help)--media[use only the media listed by comma]: :_urpmi_media" \
		"(--help)--noclean[do not clean RPM cache]" \
		"(--help --src -s)"{--src,-s}"[next package is source package]" \
		"(--help)--update[use only update media]" \
		"(--help --curl)--wget[use wget to retrieve distant files]" \
		"(--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)-P[do not search in provides]" \
		"(--help -q -v)-q[be quiet]" \
		"(--help -q -v)-v[verbose mode]" \
		"(--help --best-output)-X[use X interface]" \
		"(--help)"{,\*}": :_urpmi_rpms" \
	    && ret=0
	;;
	urpmq )
	    _arguments -A '-*' \
		"(--help -h)--auto-select[automatically select packages for upgrading the system]" \
		"(--help -h)--force[ignore non-existent packages]" \
		"(--help -h --fuzzy -z)"{--fuzzy,-y}"[return all matches even if exact match exists]" \
		"(--help -h)--headers[extract headers for package listed from urpmi db to stdout]" \
		"(--help -h)--media[use only the media listed by comma]: :_urpmi_media" \
		"(--help -h)--sources[show full path to package file]" \
		"(--help -h --src -s)"{--src,-s}"[next package is source package]" \
		"(--help -h)--update[use only update media]" \
		"(--help -h -c -p -P)-c[choose complete method for resolving requires closure]" \
		"(--help -h)-d[show package depndencies]" \
		"(--help -h)-f[print version, release and arch with name]" \
		"(--help -h)-g[print groups too with name]" \
		"(--help -h -c -p -P)-p[allow search in provides to find package]" \
		"(--help -h -c -p -P)-P[do not search in provides to find package]" \
		"(--help -h)-r[print version and release too with name]" \
		"(--help -h)-u[remove package if a better version is already installed]" \
		"(--help -h)-v[verbose mode]" \
		"(--help -h)*:urpmi package name: " \
	     && ret=0
	;;
    esac

    return $ret
}

local update_policy

zstyle -s ":completion:*:*:urpmi:*" cache-policy update_policy
if [[ -z "$update_policy" ]]; then
    zstyle ":completion:*:*:urpmi:*" cache-policy _urpmi_cache_policy
fi

_urpmi "$@"

  parent reply	other threads:[~2002-04-19  8:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-13 20:38 Borsenkow Andrej
2002-04-13 23:26 ` Bart Schaefer
2002-04-16  6:11   ` Borsenkow Andrej
2002-04-16  7:54   ` Sven Wischnowsky
2002-04-16 10:08     ` Borsenkow Andrej
2002-04-16 16:07       ` Bart Schaefer
2002-04-17  7:26         ` PATCH: " Sven Wischnowsky
2002-04-19  8:37         ` Borsenkow Andrej [this message]
2002-04-19 16:54           ` Bart Schaefer
2002-04-23  9:45             ` Oliver Kiddle
2002-04-24  7:37               ` Sven Wischnowsky
2002-05-06  7:04               ` PATCH: _urpmi update Borsenkow Andrej

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='001501c1e77d$6e0a94c0$1fc1f2a3@mow.siemens.ru' \
    --to=andrej.borsenkow@mow.siemens.ru \
    --cc=schaefer@brasslantern.com \
    --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).