aboutsummaryrefslogtreecommitdiffhomepage
path: root/debian
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2017-09-14 18:24:10 +0200
committerGuido Günther <agx@sigxcpu.org>2017-09-14 18:32:34 +0200
commit0c6cbfaf56088e1199ad61706469d3c47ec59a65 (patch)
treec9b75f4368f54b4e2f02ee7721e4411d8cbbc2f2 /debian
parent01ee02783d51ffc6cd94820cb66c49812f9eeec9 (diff)
bash completion: don't accidentaly match subcommands as options
We match on option first so we need to make sure we don't accidentaly match on subcommands. This unbreaks command completion for e.g. "gbp tag"
Diffstat (limited to 'debian')
-rw-r--r--debian/gbp.completion68
1 files changed, 35 insertions, 33 deletions
diff --git a/debian/gbp.completion b/debian/gbp.completion
index 7aa3424d..7366fc22 100644
--- a/debian/gbp.completion
+++ b/debian/gbp.completion
@@ -67,39 +67,41 @@ _gbp_comp ()
cur=""
fi
- if [[ "${branch_opts}" == *$prev* ]]; then
- local refs=$(_gbp_branches)
- COMPREPLY=( $(compgen -W "$refs" -- $cur ) )
- return 0
- fi
-
- if [[ "${tag_opts}" == *$prev* ]]; then
- local refs=$(_gbp_tags)
- COMPREPLY=( $(compgen -W "$refs" -- $cur ) )
- return 0
- fi
-
- if [[ "${tristate_opts}" == *$prev* ]]; then
- COMPREPLY=( $(compgen -W 'on off auto' -- $cur ) )
- return 0
- fi
-
- if [[ "${cbdist_opts}" == *$prev* ]]; then
- local BASE="/var/cache/pbuilder/base-"
- COMPREPLY=( $( compgen -o dirnames -G "${BASE}${cur}*.cow" \
- | sed -e "s,${BASE}\(.*\)\.cow,\1,g" ) )
- return 0
- fi
-
- if [[ "${remote_config_opts}" == *$prev* ]]; then
- local remote_configs=$(_gbp_remote_configs)
- COMPREPLY=( $(compgen -W "$remote_configs" -- $cur ) )
- return 0
- fi
-
- if [[ "${file_opts}" == *$prev* ]]; then
- COMPREPLY=( $(compgen -f -- $cur ) )
- return 0
+ if [[ ${prev} == --* ]]; then
+ if [[ "${branch_opts}" == *$prev* && "${prev}" == --* ]]; then
+ local refs=$(_gbp_branches)
+ COMPREPLY=( $(compgen -W "$refs" -- $cur ) )
+ return 0
+ fi
+
+ if [[ "${tag_opts}" == *$prev* && "${prev}" == --* ]]; then
+ local refs=$(_gbp_tags)
+ COMPREPLY=( $(compgen -W "$refs" -- $cur ) )
+ return 0
+ fi
+
+ if [[ "${tristate_opts}" == *$prev* ]]; then
+ COMPREPLY=( $(compgen -W 'on off auto' -- $cur ) )
+ return 0
+ fi
+
+ if [[ "${cbdist_opts}" == *$prev* ]]; then
+ local BASE="/var/cache/pbuilder/base-"
+ COMPREPLY=( $( compgen -o dirnames -G "${BASE}${cur}*.cow" \
+ | sed -e "s,${BASE}\(.*\)\.cow,\1,g" ) )
+ return 0
+ fi
+
+ if [[ "${remote_config_opts}" == *$prev* ]]; then
+ local remote_configs=$(_gbp_remote_configs)
+ COMPREPLY=( $(compgen -W "$remote_configs" -- $cur ) )
+ return 0
+ fi
+
+ if [[ "${file_opts}" == *$prev* ]]; then
+ COMPREPLY=( $(compgen -f -- $cur ) )
+ return 0
+ fi
fi
# separate opts by tab so we can append a space to all options not ending