summaryrefslogtreecommitdiffstats
path: root/completions/bts
diff options
context:
space:
mode:
Diffstat (limited to 'completions/bts')
-rw-r--r--completions/bts96
1 files changed, 50 insertions, 46 deletions
diff --git a/completions/bts b/completions/bts
index d535d13..e4f8079 100644
--- a/completions/bts
+++ b/completions/bts
@@ -1,81 +1,85 @@
-# bts completion -*- shell-script -*-
+# bts completion -*- shell-script -*-
-# List bug numbers from bugs cache in ~/.devscripts_cache/bts
-_cached_bugs()
+# Generate bug numbers from bugs cache in ~/.devscripts_cache/bts
+_comp_cmd_bts__compgen_cached_bugs()
{
- [[ -d $HOME/.devscripts_cache/bts ]] &&
- find $HOME/.devscripts_cache/bts -maxdepth 1 -name "${cur}[0-9]*.html" \
+ [[ -d $HOME/.devscripts_cache/bts ]] || return 1
+ local bugs=$(
+ find "$HOME/.devscripts_cache/bts" -maxdepth 1 \
+ -name "${cur}[0-9]*.html" \
-printf "%f\n" | cut -d'.' -f1
+ )
+ _comp_compgen -RU bugs -- -W '$bugs'
}
-# List APT source packages prefixed with "src:"
-_src_packages_with_prefix()
+# Generate APT source packages prefixed with "src:"
+_comp_cmd_bts__compgen_src_packages_with_prefix()
{
- ppn=${cur:4} # partial package name, after stripping "src:"
- compgen -P "src:" -W '$(_xfunc apt-cache _apt_cache_sources "$ppn")' \
- -- "$ppn"
+ local _ppn=${cur:4} # partial package name, after stripping "src:"
+ local sources
+ _comp_compgen -v sources -c "$_ppn" -x apt-cache sources &&
+ _comp_compgen -U sources -- -P "src:" -W '"${sources[@]}"'
}
-_bts()
+_comp_cmd_bts()
{
- local cur prev words cword split
- _init_completion -s || return
+ local cur prev words cword was_split comp_args
+ _comp_initialize -s -- "$@" || return
case $prev in
show | bugs)
- COMPREPLY=($(compgen -W 'release-critical RC from: tag:
- usertag:' -- "$cur") $(_cached_bugs)
- $(_src_packages_with_prefix))
+ _comp_compgen -- -W 'release-critical RC from: tag: usertag:'
+ _comp_compgen -ai bts cached_bugs
+ _comp_compgen -ai bts src_packages_with_prefix
return
;;
select)
- COMPREPLY=($(compgen -W 'package: source: maintainer: submitter:
+ _comp_compgen -- -W 'package: source: maintainer: submitter:
severity: status: tag: owner: correspondent: affects: bugs:
- users: archive:' -- "$cur"))
+ users: archive:'
return
;;
status)
- COMPREPLY=($(compgen -W 'file: fields: verbose' -- "$cur")
- $(_cached_bugs))
+ _comp_compgen -- -W 'file: fields: verbose'
+ _comp_compgen -ai bts cached_bugs
return
;;
block | unblock)
- COMPREPLY=($(compgen -W 'by with' -- "$cur"))
+ _comp_compgen -- -W 'by with'
return
;;
severity)
- COMPREPLY=($(compgen -W 'wishlist minor normal important serious
- grave critical' -- "$cur"))
+ _comp_compgen -- -W 'wishlist minor normal important serious grave
+ critical'
return
;;
limit)
- COMPREPLY=($(compgen -W 'submitter date subject msgid package
- source tag severity owner affects archive' -- "$cur"))
+ _comp_compgen -- -W 'submitter date subject msgid package source
+ tag severity owner affects archive'
return
;;
clone | "done" | reopen | archive | unarchive | retitle | summary | submitter | found | notfound | fixed | notfixed | merge | forcemerge | unmerge | claim | unclaim | forwarded | notforwarded | owner | noowner | subscribe | unsubscribe | reportspam | spamreport | affects | usertag | usertags | reassign | tag | tags)
- COMPREPLY=($(_cached_bugs))
+ _comp_compgen -i bts cached_bugs
return
;;
package)
- COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
+ _comp_compgen -x apt-cache packages
return
;;
cache)
- COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)
- $(_src_packages_with_prefix)
- $(compgen -W 'from: release-critical RC' -- "$cur"))
+ _comp_compgen -x apt-cache packages
+ _comp_compgen -ai bts src_packages_with_prefix
+ _comp_compgen -a -- -W 'from: release-critical RC'
return
;;
cleancache)
- COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)
- $(_src_packages_with_prefix)
- $(compgen -W 'from: tag: usertag: ALL' -- "$cur"))
+ _comp_compgen -x apt-cache packages
+ _comp_compgen -ai bts src_packages_with_prefix
+ _comp_compgen -a -- -W 'from: tag: usertag: ALL'
return
;;
user)
# non-predicible arguments
- COMPREPLY=()
return
;;
:)
@@ -83,30 +87,30 @@ _bts()
# COMP_WORDS would be: "bts cleancache src : <partial_pkg_name>"
pos=$((COMP_CWORD - 2))
if [[ $pos -gt 0 && ${COMP_WORDS[pos]} == "src" ]]; then
- COMPREPLY=($(_xfunc apt-cache _apt_cache_src_packages))
+ _comp_compgen -x apt-cache sources
+
return
fi
;;
esac
- $split && return
+ [[ $was_split ]] && return
- COMPREPLY=($(compgen -W '--offline --online --no-offline
- --no-action --cache --no-cache --cache-mode --cache-delay --mbox
- --mailreader --cc-addr --use-default-cc --no-use-default-cc
- --sendmail --mutt --no-mutt --smtp-host --smtp-username
- --smtp-helo --bts-server --force-refresh --no-force-refresh
- --only-new --include-resolved --no-include-resolved --no-ack --ack
- --interactive --force-interactive --no-interactive --quiet
- --no-conf --noconf
+ _comp_compgen -- -W '--offline --online --no-offline --no-action --cache
+ --no-cache --cache-mode --cache-delay --mbox --mailreader --cc-addr
+ --use-default-cc --no-use-default-cc --sendmail --mutt --no-mutt
+ --smtp-host --smtp-username --smtp-helo --bts-server --force-refresh
+ --no-force-refresh --only-new --include-resolved --no-include-resolved
+ --no-ack --ack --interactive --force-interactive --no-interactive
+ --quiet --no-conf --noconf
show bugs select status clone done reopen archive unarchive retitle
summary submitter reassign found notfound fixed notfixed block unblock
merge forcemerge unmerge tag tags affects user usertag usertags claim
unclaim severity forwarded notforwarded package limit owner noowner
subscribe unsubscribe reportspam spamreport cache cleancache version
- help' -- "$cur"))
+ help'
} &&
- complete -F _bts bts
+ complete -F _comp_cmd_bts bts
# ex: filetype=sh