bts: New completion, thanks to Federico Ceratto.
This commit is contained in:
parent
1cfbbdd52c
commit
b2e7951cd7
@ -28,6 +28,7 @@ bashcomp_DATA = 2to3 \
|
|||||||
bk \
|
bk \
|
||||||
brctl \
|
brctl \
|
||||||
btdownloadheadless.py \
|
btdownloadheadless.py \
|
||||||
|
bts \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
cal \
|
cal \
|
||||||
cancel \
|
cancel \
|
||||||
|
123
completions/bts
Normal file
123
completions/bts
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# 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 binary packages
|
||||||
|
_packages() {
|
||||||
|
apt-cache --no-generate pkgnames "$cur" 2> /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# List APT source packages
|
||||||
|
_apt_cache_sources() {
|
||||||
|
apt-cache dumpavail | command grep "^Source: $1" | cut -f2 -d" " | sort -u
|
||||||
|
}
|
||||||
|
|
||||||
|
# List APT source packages
|
||||||
|
_src_packages() {
|
||||||
|
compgen -W '$( _apt_cache_sources "$cur" )' -- "$cur"
|
||||||
|
}
|
||||||
|
|
||||||
|
# List APT source packages prefixed with "src:"
|
||||||
|
_src_packages_with_prefix() {
|
||||||
|
ppn=${cur:4} # partial package name, after stripping "src:"
|
||||||
|
compgen -P "src:" -W '$( _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=( $( _packages ) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
cache)
|
||||||
|
COMPREPLY=( $( _packages ) $( _src_packages_with_prefix )
|
||||||
|
$( compgen -W 'from: release-critical RC' -- "$cur" ))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
cleancache)
|
||||||
|
COMPREPLY=( $( _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=( $( _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
|
21
test/lib/completions/bts.exp
Normal file
21
test/lib/completions/bts.exp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
proc setup {} {
|
||||||
|
save_env
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
proc teardown {} {
|
||||||
|
assert_env_unmodified
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
setup
|
||||||
|
|
||||||
|
|
||||||
|
assert_complete_any "bts -"
|
||||||
|
sync_after_int
|
||||||
|
|
||||||
|
assert_complete "bts "
|
||||||
|
sync_after_int
|
||||||
|
|
||||||
|
|
||||||
|
teardown
|
Loading…
x
Reference in New Issue
Block a user