Refactor bts and uscan, since they use common functions

This commit is contained in:
David Paleino 2013-11-26 18:29:34 +01:00
parent 61fa261502
commit 780d97c5ac
3 changed files with 23 additions and 34 deletions

View File

@ -1,5 +1,20 @@
# Debian apt-cache(8) completion -*- shell-script -*- # Debian apt-cache(8) completion -*- shell-script -*-
# List APT binary packages
_apt_cache_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
_apt_cache_src_packages() {
compgen -W '$( _apt_cache_sources "$cur" )' -- "$cur"
}
_apt_cache() _apt_cache()
{ {
local cur prev words cword local cur prev words cword
@ -23,13 +38,12 @@ _apt_cache()
;; ;;
showsrc) showsrc)
COMPREPLY=( $( apt-cache dumpavail | \ COMPREPLY=( $( _apt_cache_sources "$cur" ) )
command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
return 0 return 0
;; ;;
*) *)
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) ) COMPREPLY=( $( _apt_cache_packages ) )
return 0 return 0
;; ;;

View File

@ -6,25 +6,10 @@ _cached_bugs() {
find $HOME/.devscripts_cache/bts -maxdepth 1 -name "$cur[0-9]*.html" -printf "%f\n" | cut -d'.' -f1 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:" # List APT source packages prefixed with "src:"
_src_packages_with_prefix() { _src_packages_with_prefix() {
ppn=${cur:4} # partial package name, after stripping "src:" ppn=${cur:4} # partial package name, after stripping "src:"
compgen -P "src:" -W '$( _apt_cache_sources "$ppn" )' -- "$ppn" compgen -P "src:" -W '$( _xfunc apt-cache _apt_cache_sources "$ppn" )' -- "$ppn"
} }
@ -70,16 +55,16 @@ _bts()
return 0 return 0
;; ;;
package) package)
COMPREPLY=( $( _packages ) ) COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) )
return 0 return 0
;; ;;
cache) cache)
COMPREPLY=( $( _packages ) $( _src_packages_with_prefix ) COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) $( _src_packages_with_prefix )
$( compgen -W 'from: release-critical RC' -- "$cur" )) $( compgen -W 'from: release-critical RC' -- "$cur" ))
return 0 return 0
;; ;;
cleancache) cleancache)
COMPREPLY=( $( _packages ) $( _src_packages_with_prefix ) COMPREPLY=( $( _xfunc apt-cache _apt_cache_packages ) $( _src_packages_with_prefix )
$( compgen -W 'from: tag: usertag: ALL' -- "$cur" )) $( compgen -W 'from: tag: usertag: ALL' -- "$cur" ))
return 0 return 0
;; ;;
@ -93,7 +78,7 @@ _bts()
# COMP_WORDS would be: "bts cleancache src : <partial_pkg_name>" # COMP_WORDS would be: "bts cleancache src : <partial_pkg_name>"
pos=$((COMP_CWORD - 2)) pos=$((COMP_CWORD - 2))
if [[ $pos -gt 0 && "${COMP_WORDS[$pos]}" == "src" ]]; then if [[ $pos -gt 0 && "${COMP_WORDS[$pos]}" == "src" ]]; then
COMPREPLY=( $( _src_packages ) ) COMPREPLY=( $( _xfunc apt-cache _apt_cache_src_packages ) )
return 0 return 0
fi fi
;; ;;

View File

@ -1,15 +1,5 @@
# uscan completion -*- shell-script -*- # uscan completion -*- shell-script -*-
# List APT source packages
_apt_cache_sources() {
apt-cache dumpavail | command grep "^Source: $1" | cut -f2 -d" "
}
# List APT source packages
_src_packages() {
compgen -W '$( _apt_cache_sources "$cur" )' -- "$cur"
}
_uscan() _uscan()
{ {
local cur prev split local cur prev split
@ -17,7 +7,7 @@ _uscan()
case $prev in case $prev in
--package) --package)
COMPREPLY=( $( _src_packages )) COMPREPLY=( $( _xfunc apt-cache _apt_cache_src_packages ))
return 0 return 0
;; ;;
--watchfile) --watchfile)