Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug#390574: zsh: Updated completions for schroot and dchroot
- X-seq: zsh-workers 22803
- From: Clint Adams <schizo@xxxxxxxxxx>
- To: Roger Leigh <rleigh@xxxxxxxxxx>, 390574@xxxxxxxxxxxxxxx
- Subject: Re: Bug#390574: zsh: Updated completions for schroot and dchroot
- Date: Sun, 1 Oct 2006 17:49:53 -0400
- Cc: zsh-workers@xxxxxxxxxx
- In-reply-to: <20061001210027.13349.94075.reportbug@xxxxxxxxxxxxxx>
- Mail-followup-to: Roger Leigh <rleigh@xxxxxxxxxx>, 390574@xxxxxxxxxxxxxxx, zsh-workers@xxxxxxxxxx
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <20061001210027.13349.94075.reportbug@xxxxxxxxxxxxxx>
> 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
Messages sorted by:
Reverse Date,
Date,
Thread,
Author