Split aptitude-related completions to contrib/aptitude

This commit is contained in:
David Paleino 2009-06-05 08:38:19 +02:00
parent 040841f890
commit 554ab3d1bd
4 changed files with 97 additions and 97 deletions

View File

@ -23,6 +23,7 @@ bash-completion (1.x)
* Split chkconfig completion to contrib/chkconfig
* Split chsh completion to contrib/chsh
* Split apt_build completion to contrib/apt-build
* Split aptitude-related completions to contrib/aptitude
[ Ville Skyttä ]
* Split yum and yum-arch completion into contrib/yum.

View File

@ -5,6 +5,7 @@ bashcompdir = $(sysconfdir)/bash_completion.d
bashcomp_DATA = contrib/ant \
contrib/apache2ctl \
contrib/apt-build \
contrib/aptitude \
contrib/aspell \
contrib/autorpm \
contrib/bind-utils \

View File

@ -1955,103 +1955,6 @@ _apt_cache()
} &&
complete -F _apt_cache $filenames apt-cache
# Debian aptitude(1) completion
#
have aptitude && {
have grep-status && {
_comp_dpkg_hold_packages()
{
grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package
}
} || {
_comp_dpkg_hold_packages()
{
grep -B 2 'hold' /var/lib/dpkg/status | grep "Package: $1" \
| cut -d\ -f2
}
}
_aptitude()
{
local cur dashoptions prev special i
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
dashoptions='-S -u -i -h --help --version -s --simulate -d \
--download-only -P --prompt -y --assume-yes -F \
--display-format -O --sort -w --width -f -r -g \
--with-recommends --with-suggests -R -G \
--without-recommends --without-suggests -t \
--target-release -V --show-versions -D --show-deps\
-Z -v --verbose --purge-unused --schedule-only'
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
if [[ ${COMP_WORDS[i]} == @(install|reinstall|hold|unhold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|forbid-version|purge|remove|changelog|why|why-not|keep|keep-all|build-dep) ]]; then
special=${COMP_WORDS[i]}
fi
#exclude some mutually exclusive options
[[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i}
[[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u}
done
if [[ -n "$special" ]]; then
case $special in
@(install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|changelog|why|why-not|build-dep))
COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
return 0
;;
@(purge|remove|reinstall|forbid-version))
COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
return 0
;;
unhold)
COMPREPLY=( $( _comp_dpkg_hold_packages $cur ) )
return 0
;;
esac
fi
case $prev in
# don't complete anything if these options are found
@(autoclean|clean|forget-new|search|upgrade|safe-upgrade|update|keep-all))
return 0
;;
-S)
_filedir
return 0
;;
-@(t|-target-release|-default-release))
COMPREPLY=( $( apt-cache policy | \
grep "release.o=Debian,a=$cur" | \
sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) )
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
else
COMPREPLY=( $( compgen -W 'update upgrade safe-upgrade forget-new clean \
autoclean install reinstall remove \
hold unhold purge markauto unmarkauto why why-not \
dist-upgrade full-upgrade download search show \
forbid-version changelog keep-all build-dep' -- $cur ) )
fi
return 0
}
complete -F _aptitude $default aptitude
}
# This function provides simple user@host completion
#
_user_at_host() {

95
contrib/aptitude Normal file
View File

@ -0,0 +1,95 @@
# Debian aptitude(1) completion
#
have aptitude && {
have grep-status && {
_comp_dpkg_hold_packages()
{
grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package
}
} || {
_comp_dpkg_hold_packages()
{
grep -B 2 'hold' /var/lib/dpkg/status | grep "Package: $1" \
| cut -d\ -f2
}
}
_aptitude()
{
local cur dashoptions prev special i
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
dashoptions='-S -u -i -h --help --version -s --simulate -d \
--download-only -P --prompt -y --assume-yes -F \
--display-format -O --sort -w --width -f -r -g \
--with-recommends --with-suggests -R -G \
--without-recommends --without-suggests -t \
--target-release -V --show-versions -D --show-deps\
-Z -v --verbose --purge-unused --schedule-only'
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
if [[ ${COMP_WORDS[i]} == @(install|reinstall|hold|unhold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|forbid-version|purge|remove|changelog|why|why-not|keep|keep-all|build-dep) ]]; then
special=${COMP_WORDS[i]}
fi
#exclude some mutually exclusive options
[[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i}
[[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u}
done
if [[ -n "$special" ]]; then
case $special in
@(install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|changelog|why|why-not|build-dep))
COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
return 0
;;
@(purge|remove|reinstall|forbid-version))
COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
return 0
;;
unhold)
COMPREPLY=( $( _comp_dpkg_hold_packages $cur ) )
return 0
;;
esac
fi
case $prev in
# don't complete anything if these options are found
@(autoclean|clean|forget-new|search|upgrade|safe-upgrade|update|keep-all))
return 0
;;
-S)
_filedir
return 0
;;
-@(t|-target-release|-default-release))
COMPREPLY=( $( apt-cache policy | \
grep "release.o=Debian,a=$cur" | \
sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) )
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
else
COMPREPLY=( $( compgen -W 'update upgrade safe-upgrade forget-new clean \
autoclean install reinstall remove \
hold unhold purge markauto unmarkauto why why-not \
dist-upgrade full-upgrade download search show \
forbid-version changelog keep-all build-dep' -- $cur ) )
fi
return 0
}
complete -F _aptitude $default aptitude
}