From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23215 invoked from network); 1 Oct 2006 21:50:13 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.5 (2006-08-29) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00, FORGED_RCVD_HELO autolearn=ham version=3.1.5 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 1 Oct 2006 21:50:13 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 66376 invoked from network); 1 Oct 2006 21:50:06 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 1 Oct 2006 21:50:06 -0000 Received: (qmail 12895 invoked by alias); 1 Oct 2006 21:50:02 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 22803 Received: (qmail 12878 invoked from network); 1 Oct 2006 21:50:01 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 1 Oct 2006 21:50:01 -0000 Received: (qmail 65836 invoked from network); 1 Oct 2006 21:50:01 -0000 Received: from acolyte.scowler.net (216.254.112.45) by a.mx.sunsite.dk with SMTP; 1 Oct 2006 21:50:00 -0000 Received: by acolyte.scowler.net (Postfix, from userid 1000) id C49B370055; Sun, 1 Oct 2006 17:49:53 -0400 (EDT) Date: Sun, 1 Oct 2006 17:49:53 -0400 From: Clint Adams To: Roger Leigh , 390574@bugs.debian.org Cc: zsh-workers@sunsite.dk Subject: Re: Bug#390574: zsh: Updated completions for schroot and dchroot Message-ID: <20061001214953.GA25131@scowler.net> Mail-Followup-To: Roger Leigh , 390574@bugs.debian.org, zsh-workers@sunsite.dk References: <20061001210027.13349.94075.reportbug@hardknott.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061001210027.13349.94075.reportbug@hardknott.home> User-Agent: Mutt/1.5.13 (2006-08-11) > Hi, > > Attached is a patch to update the completions for schroot and dchroot, and also > to add completions for dchroot-dsa. > > Since I'm new to zsh, some parts of the patch might be suboptimal. Feel free to > alter it. The bit I'm not sure about is: > > - compadd ${${$(dchroot -l)[3,-1]%,}:#\[*\]} && ret=0 > + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq) > > The output of dchroot: > > % dchroot -l > Available chroots: experimental, fake, sarge [stable, sarge-backports], sid [unstable, unstable-sbuild], sid-block [sid-block], sid-file, sid-file-source, sid-snap, sid-snap-source, testsnap, testsnap-source > > The ,[] all need stripping, and duplicates need removing. The old code assumes > there will only be one name in square brackets, but this is no longer the case. > I didn't find a way to do this with the zsh shell ${} operations. Yes, you can do it with something like this (the line break is literal) ${(os:,:)${${${"$(dchroot -l)"#Available chroots: }/\[*\]/}//[ ]/}} I'll tweak the patch. > diff -urN zsh-4.3.2.original/Completion/Debian/Command/_dchroot zsh-4.3.2/Completion/Debian/Command/_dchroot > --- zsh-4.3.2.original/Completion/Debian/Command/_dchroot 2005-11-25 09:45:33.000000000 +0000 > +++ zsh-4.3.2/Completion/Debian/Command/_dchroot 2006-10-01 21:48:22.030202507 +0100 > @@ -1,18 +1,27 @@ > #compdef dchroot > > -local curcontext="$curcontext" state line expl ret=1 > +local expl context state line > +typeset -A opt_args > > -_arguments -C \ > - '(-c -l -h -V)-a[execute in all known chroots]' \ > - '(-a -l -h -V)-c[execute in specified chroot]:chroot:->chroots' \ > - '(- *)-l[list available chroots]' \ > - '(-l)-d[preserve environment in chroot]' \ > - '(-h -l -V)-q[be quiet]' \ > - '(- *)-h[display help information]' \ > - '(- *)-V[display version information]' \ > - '*::args: _normal' && ret=0 > +_arguments -S \ > + '(-h --help)'{-h,--help}'[help]' \ > + '(-a --all)'{-a,--all}'[select all chroots]' \ > + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \ > + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \ > + '(-l --list)'{-l,--list}'[list available chroots]' \ > + '(-i --info)'{-i,--info}'[show information about selected chroots]' \ > + '(-p --path)'{-p,--path}'[print path to selected chroot]' \ > + '--config[dump configuration of selected chroots]' \ > + '(-d --preserve-environment)'{-d,--preserve-environment}'[preserve user environment]' \ > + '(-q --quiet)'{-q,--quiet}'[quiet]' \ > + '(-v --verbose)'{-v,--verbose}'[verbose]' \ > + '(-V --version)'{-V,--version}'[version]' \ > + '(-):command name: _command_names -e' \ > + '*::arguments: _normal' && return 0 > > -[[ -n $state ]] && _wanted chroots expl chroot \ > - compadd ${${$(dchroot -l)[3,-1]%,}:#\[*\]} && ret=0 > - > -return ret > +case "$state" in > + (chroot) > + _wanted tag expl 'chroot' \ > + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq) > + ;; > +esac > diff -urN zsh-4.3.2.original/Completion/Debian/Command/_dchroot-dsa zsh-4.3.2/Completion/Debian/Command/_dchroot-dsa > --- zsh-4.3.2.original/Completion/Debian/Command/_dchroot-dsa 1970-01-01 01:00:00.000000000 +0100 > +++ zsh-4.3.2/Completion/Debian/Command/_dchroot-dsa 2006-10-01 21:49:02.110202507 +0100 > @@ -0,0 +1,26 @@ > +#compdef dchroot-dsa > + > +local expl context state line > +typeset -A opt_args > + > +_arguments -S \ > + '(-h --help)'{-h,--help}'[help]' \ > + '(-a --all)'{-a,--all}'[select all chroots]' \ > + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \ > + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \ > + '(-l --list)'{-l,--list}'[list available chroots]' \ > + '(-i --info)'{-i,--info}'[show information about selected chroots]' \ > + '(-p --listpaths)'{-p,--listpaths}'[print paths to available chroots]' \ > + '--config[dump configuration of selected chroots]' \ > + '(-q --quiet)'{-q,--quiet}'[quiet]' \ > + '(-v --verbose)'{-v,--verbose}'[verbose]' \ > + '(-V --version)'{-V,--version}'[version]' \ > + '(-):command name: _command_names -e' \ > + '*::arguments: _normal' && return 0 > + > +case "$state" in > + (chroot) > + _wanted tag expl 'chroot' \ > + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq) > + ;; > +esac > diff -urN zsh-4.3.2.original/Completion/Debian/Command/_schroot zsh-4.3.2/Completion/Debian/Command/_schroot > --- zsh-4.3.2.original/Completion/Debian/Command/_schroot 2006-02-27 02:08:29.000000000 +0000 > +++ zsh-4.3.2/Completion/Debian/Command/_schroot 2006-10-01 21:45:06.762202507 +0100 > @@ -5,30 +5,30 @@ > > _arguments -S \ > '(-h --help)'{-h,--help}'[help]' \ > - '(-a --all)'{-a,--all}'[all chroots and active sessions]' \ > - '--all-chroots' \ > - '--all-sessions' \ > - '*'{-c,--chroot=}':chroot:->chroot' \ > - '(-u --user)'{-u,--user=}':user:_users' \ > + '(-a --all)'{-a,--all}'[select all chroots and active sessions]' \ > + '--all-chroots[select all chroots]' \ > + '--all-sessions[select all active sessions]' \ > + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \ > + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \ > + '(-u --user)'{-u,--user=}'[username (default current user)]:user:_users' \ > '(-l --list)'{-l,--list}'[list available chroots]' \ > - '(-i --info)'{-i,--info}'[print detailed information about specified chroots]' \ > - '--location[print location of specified chroots]' \ > - '--config[print configuration of specified chroots]' \ > - '(-p --preserve-environment)'{-p,--preserve-environment}'[preserve user environment within chroot]' \ > + '(-i --info)'{-i,--info}'[show information about selected chroots]' \ > + '--location[print location of selected chroots]' \ > + '--config[dump configuration of selected chroots]' \ > + '(-p --preserve-environment)'{-p,--preserve-environment}'[preserve user environment]' \ > '(-q --quiet)'{-q,--quiet}'[quiet]' \ > '(-v --verbose)'{-v,--verbose}'[verbose]' \ > '(-V --version)'{-V,--version}'[version]' \ > - '(-b --begin-session)'{-b,--begin-session}'[begin a session]' \ > - '--recover-session}[recover an existing session]' \ > - '(-e --end-session)'{-e,--end-session=}':session UUID:' \ > - '(-f --force)'{-f,--force}'[force a session operation]' \ > + '(-b --begin-session)'{-b,--begin-session}'[begin a session; returns a session ID]' \ > + '--recover-session[recover an existing session]' \ > + '(-e --end-session)'{-e,--end-session}'[end an existing session]' \ > + '(-f --force)'{-f,--force}'[force operation]' \ > '(-):command name: _command_names -e' \ > '*::arguments: _normal' && return 0 > > case "$state" in > (chroot) > _wanted tag expl 'chroot' \ > - compadd $(schroot -l) > + compadd $(schroot -l -a) > ;; > - > esac