[Intel-gfx] [maintainer-tools PATCH 1/8] completion: require bash completion package and use it
Jani Nikula
jani.nikula at intel.com
Fri Feb 19 14:31:56 UTC 2016
On Thu, 18 Feb 2016, Jani Nikula <jani.nikula at intel.com> wrote:
> The bash completion package makes life a whole lot easier than using the
> builtin bash completion features. It's quite likely anyone using
> completion in bash already has it installed.
I boldly went ahead and pushed the lot. Please scream if
https://xkcd.com/1172/.
BR,
Jani.
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> bash_completion | 62 ++++++++++++++++++++++++++++++++-------------------------
> 1 file changed, 35 insertions(+), 27 deletions(-)
>
> diff --git a/bash_completion b/bash_completion
> index e44e5fc844b4..6a3a88cc80f8 100644
> --- a/bash_completion
> +++ b/bash_completion
> @@ -11,7 +11,21 @@ dim ()
>
> _dim ()
> {
> - local cur cmds opts i
> + local args arg cur prev words cword split
> + local cmds
> +
> + # require bash-completion with _init_completion
> + type -t _init_completion >/dev/null 2>&1 || return
> +
> + _init_completion || return
> +
> + COMPREPLY=()
> +
> + # arg = subcommand
> + _get_first_arg
> +
> + # args = number of arguments
> + _count_args
>
> if [ -f ~/linux/drm-intel-rerere/nightly.conf ] ; then
> local nightly_branches=`(source ~/linux/drm-intel-rerere/nightly.conf ; echo $nightly_branches) | \
> @@ -35,27 +49,21 @@ _dim ()
> cmds="$cmds create-branch remove-branch create-workdir for-each-workdirs fw"
> cmds="$cmds tag-next checker"
>
> - opts="-d -f -i"
> -
> - i=1
> -
> - COMPREPLY=() # Array variable storing the possible completions.
> - cur=${COMP_WORDS[COMP_CWORD]}
> -
> - for comp in "${COMP_WORDS[@]}" ; do
> - for opt in $opts ; do
> - if [[ $opt = $comp ]] ; then
> - i=$((i+1))
> - fi
> - done
> - done
> -
> - if [[ $COMP_CWORD == "$i" ]] ; then
> - COMPREPLY=( $( compgen -W "$cmds $opts" -- $cur ) )
> + if [ -z "${arg}" ]; then
> + # top level completion
> + case "${cur}" in
> + -*)
> + local opts="-d -f -i"
> + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
> + ;;
> + *)
> + COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) )
> + ;;
> + esac
> return 0
> fi
>
> - case "${COMP_WORDS[i]}" in
> + case "${arg}" in
> push-branch)
> COMPREPLY=( $( compgen -W "-f $nightly_branches" -- $cur ) )
> ;;
> @@ -69,7 +77,7 @@ _dim ()
> COMPREPLY=( $( compgen -W "-s" -- $cur ) )
> ;;
> magic-patch|mp)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -o nospace -W "-a" -- $cur ) )
> fi
> ;;
> @@ -80,34 +88,34 @@ _dim ()
> # FIXME needs a git sha1
> ;;
> pull-request)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -W "$nightly_branches" -- $cur ) )
> - elif [[ $COMP_CWORD == "$((i+2))" ]] ; then
> + elif [[ $args == 3 ]]; then
> COMPREPLY=( $( compgen -W "$upstream_branches" -- $cur ) )
> fi
> ;;
> pull-request-next|pull-request-fixes|pull-request-next-fixes)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -W "$upstream_branches" -- $cur ) )
> fi
> ;;
> create-branch)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -o nospace -W "drm- topic/" -- $cur ) )
> fi
> ;;
> checkout|co)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -W "$nightly_branches" -- $cur ) )
> fi
> ;;
> remove-branch)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -W "$nightly_branches" -- $cur ) )
> fi
> ;;
> create-workdir)
> - if [[ $COMP_CWORD == "$((i+1))" ]] ; then
> + if [[ $args == 2 ]]; then
> COMPREPLY=( $( compgen -W "$nightly_branches all" -- $cur ) )
> fi
> ;;
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list