Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Mandrake urpmi suite completion



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