109 lines
4.1 KiB
Bash
109 lines
4.1 KiB
Bash
# 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 0
|
|
;;
|
|
select)
|
|
COMPREPLY=( $( compgen -W 'package: source: maintainer: submitter: severity: status: tag:
|
|
owner: correspondent: affects: bugs: users: archive:' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
status)
|
|
COMPREPLY=( $( compgen -W 'file: fields: verbose' -- "$cur" ) $( _cached_bugs ) )
|
|
return 0
|
|
;;
|
|
block|unblock)
|
|
COMPREPLY=( $( compgen -W 'by with' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
severity)
|
|
COMPREPLY=( $( compgen -W 'wishlist minor normal important serious grave critical' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
limit)
|
|
COMPREPLY=( $( compgen -W 'submitter date subject msgid package source tag severity owner
|
|
affects archive' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
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 0
|
|
;;
|
|
package)
|
|
COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) )
|
|
return 0
|
|
;;
|
|
cache)
|
|
COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) $( _src_packages_with_prefix )
|
|
$( compgen -W 'from: release-critical RC' -- "$cur" ))
|
|
return 0
|
|
;;
|
|
cleancache)
|
|
COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) $( _src_packages_with_prefix )
|
|
$( compgen -W 'from: tag: usertag: ALL' -- "$cur" ))
|
|
return 0
|
|
;;
|
|
user)
|
|
# non-predicible arguments
|
|
COMPREPLY=( )
|
|
return 0
|
|
;;
|
|
:)
|
|
# 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 0
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
|
|
$split && return 0
|
|
|
|
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" ) )
|
|
return 0
|
|
} &&
|
|
complete -F _bts bts
|
|
|
|
# ex: ts=4 sw=4 et filetype=sh
|