summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Borzenkov <bor@users.sourceforge.net>2002-01-13 13:11:17 +0000
committerAndrey Borzenkov <bor@users.sourceforge.net>2002-01-13 13:11:17 +0000
commit2cc2628cd10110e6310c0eb5677f5ffad2ba5b8e (patch)
treeca8b9ef9832d6792c24694fa63d6025a7828550a
parent5659f442c09bf3e94a60887b998473af02590477 (diff)
downloadzsh-2cc2628cd10110e6310c0eb5677f5ffad2ba5b8e.tar.gz
zsh-2cc2628cd10110e6310c0eb5677f5ffad2ba5b8e.zip
16437: changes for new urpi in cooker
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Mandrake/Command/_urpmi213
2 files changed, 118 insertions, 100 deletions
diff --git a/ChangeLog b/ChangeLog
index b75e396cc..68bb549ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-13 Andrej Borsenkow <bor@zsh.org>
+
+ * 16437: Completion/Mandrake/Command/_urpmi: adapt
+ to new urpmi version in cooker
+
2002-01-10 Sven Wischnowsky <wischnow@zsh.org>
* 16426: Completion/Unix/Command/_man,
diff --git a/Completion/Mandrake/Command/_urpmi b/Completion/Mandrake/Command/_urpmi
index 1b58e5cca..a51c6a5cc 100644
--- a/Completion/Mandrake/Command/_urpmi
+++ b/Completion/Mandrake/Command/_urpmi
@@ -1,111 +1,124 @@
#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
+ 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
}
-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
+_urpmi() {
+ local state context line ret=1
+ typeset -A opt_args
+ local update_policy
-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
+ zstyle -s ":completion:*:*:urpmi:*" cache-policy update_policy
+ if [[ -z "$update_policy" ]]; then
+ zstyle ":completion:*:*:urpmi:*" cache-policy _urpmi_cache_policy
+ fi
+
+ case "$service" in
+ urpmi.addmedia )
+ _arguments -A '-*' \
+ "(--wget)--curl[use curl to retrieve distant files]" \
+ "--distrib[automatically create all media from an installation medium]" \
+ "--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]" \
+ ":name of media: " \
+ ":media URL:->media_url" \
+ ": :(with)" \
+ ":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)--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[allow 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
+ ;;
+ esac
+
+ case "$state" in
+ media_url )
+ if compset -P file:// || compset -P removable://; then
+ _files -W / -/ && ret=0
+ elif [[ -prefix '(ftp|http)://' ]]; then
+ _urls && ret=0
else
- _wanted urpmi_device expl 'device for removable media' \
- compadd -s :// -S "" -a devices && return 0
+ _wanted urpmi_media_type expl 'type of media' \
+ compadd -- file:// http:// ftp:// removable:// && ret=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
+ ;;
+ 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
+ ;;
+ urpmi_rpms )
+ local pkg foo 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
+ (( $EUID == 0 )) && \
+ _wanted urpmi_files expl 'RPM files to install' \
+ _files -g '*.(#i)rpm' && ret=0
+ ;;
+ esac
-return 1
+ return $ret
+}
+_urpmi "$@"