summaryrefslogtreecommitdiffstats
path: root/completions/bts
diff options
context:
space:
mode:
Diffstat (limited to 'completions/bts')
-rw-r--r--completions/bts112
1 files changed, 112 insertions, 0 deletions
diff --git a/completions/bts b/completions/bts
new file mode 100644
index 0000000..d535d13
--- /dev/null
+++ b/completions/bts
@@ -0,0 +1,112 @@
+# bts completion -*- shell-script -*-
+
+# List bug numbers from bugs cache in ~/.devscripts_cache/bts
+_cached_bugs()
+{
+ [[ -d $HOME/.devscripts_cache/bts ]] &&
+ find $HOME/.devscripts_cache/bts -maxdepth 1 -name "${cur}[0-9]*.html" \
+ -printf "%f\n" | cut -d'.' -f1
+}
+
+# List APT source packages prefixed with "src:"
+_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"
+}
+
+_bts()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case $prev in
+ show | bugs)
+ COMPREPLY=($(compgen -W 'release-critical RC from: tag:
+ usertag:' -- "$cur") $(_cached_bugs)
+ $(_src_packages_with_prefix))
+ return
+ ;;
+ select)
+ COMPREPLY=($(compgen -W 'package: source: maintainer: submitter:
+ severity: status: tag: owner: correspondent: affects: bugs:
+ users: archive:' -- "$cur"))
+ return
+ ;;
+ status)
+ COMPREPLY=($(compgen -W 'file: fields: verbose' -- "$cur")
+ $(_cached_bugs))
+ return
+ ;;
+ block | unblock)
+ COMPREPLY=($(compgen -W 'by with' -- "$cur"))
+ return
+ ;;
+ severity)
+ COMPREPLY=($(compgen -W 'wishlist minor normal important serious
+ grave critical' -- "$cur"))
+ return
+ ;;
+ limit)
+ COMPREPLY=($(compgen -W 'submitter date subject msgid package
+ source tag severity owner affects archive' -- "$cur"))
+ 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))
+ return
+ ;;
+ package)
+ COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
+ return
+ ;;
+ cache)
+ COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)
+ $(_src_packages_with_prefix)
+ $(compgen -W 'from: release-critical RC' -- "$cur"))
+ return
+ ;;
+ cleancache)
+ COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)
+ $(_src_packages_with_prefix)
+ $(compgen -W 'from: tag: usertag: ALL' -- "$cur"))
+ return
+ ;;
+ user)
+ # non-predicible arguments
+ COMPREPLY=()
+ return
+ ;;
+ :)
+ # Chances are that "src:<src_package>" is being completed
+ # 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))
+ return
+ fi
+ ;;
+ esac
+
+ $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
+ 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"))
+
+} &&
+ complete -F _bts bts
+
+# ex: filetype=sh