mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-09 20:33:34 -08:00
127 lines
3.5 KiB
Bash
127 lines
3.5 KiB
Bash
# This function is required by _dpkg and _dpkg-reconfigure -*- shell-script -*-
|
|
|
|
_have grep-status && {
|
|
_comp_dpkg_installed_packages()
|
|
{
|
|
grep-status -P -e "^$1" -a -FStatus 'ok installed' -n -s Package
|
|
}
|
|
} || {
|
|
_comp_dpkg_installed_packages()
|
|
{
|
|
command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null |
|
|
command grep -B 1 -Ee "ok installed|half-installed|unpacked| \
|
|
half-configured" \
|
|
-Ee "^Essential: yes" |
|
|
awk "/Package: $1/ { print \$2 }" 2>/dev/null
|
|
}
|
|
}
|
|
|
|
_have grep-status && {
|
|
_comp_dpkg_purgeable_packages()
|
|
{
|
|
grep-status -P -e "^$1" -a -FStatus 'ok installed' -o -FStatus 'ok config-files' -n -s Package
|
|
}
|
|
} || {
|
|
_comp_dpkg_purgeable_packages()
|
|
{
|
|
command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null |
|
|
command grep -B 1 -Ee "ok installed|half-installed|unpacked| \
|
|
half-configured|config-files" \
|
|
-Ee "^Essential: yes" |
|
|
awk "/Package: $1/ { print \$2 }" 2>/dev/null
|
|
}
|
|
}
|
|
|
|
# Debian dpkg(1) completion
|
|
#
|
|
_dpkg()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
local i=$cword
|
|
|
|
# find the last option flag
|
|
if [[ $cur != -* ]]; then
|
|
while [[ $prev != -* && $i -ne 1 ]]; do
|
|
prev=${words[--i - 1]}
|
|
done
|
|
fi
|
|
|
|
case $prev in
|
|
--install | --unpack | --record-avail | --contents | --info | --fsys-tarfile | \
|
|
--field | --control | --extract | --vextract | --raw-extract | -!(-*)[ciAIfexX])
|
|
_filedir '?(u|d)deb'
|
|
return
|
|
;;
|
|
--build | -!(-*)b)
|
|
_filedir -d
|
|
return
|
|
;;
|
|
--status | --print-avail | --list | -!(-*)[spl])
|
|
COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
|
|
return
|
|
;;
|
|
--show | -!(-*)W)
|
|
if [[ $1 == *dpkg-query ]]; then
|
|
COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
|
|
else
|
|
_filedir '?(u|d)deb'
|
|
fi
|
|
return
|
|
;;
|
|
--search | -!(-*)S)
|
|
_filedir
|
|
return
|
|
;;
|
|
--remove | --verify | -!(-*)[rV])
|
|
COMPREPLY=($(_comp_dpkg_installed_packages "$cur"))
|
|
return
|
|
;;
|
|
--listfiles | --purge | -!(-*)[LP])
|
|
COMPREPLY=($(_comp_dpkg_purgeable_packages "$cur"))
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
|
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
|
|
} &&
|
|
complete -F _dpkg dpkg dpkg-deb dpkg-query
|
|
|
|
# Debian GNU dpkg-reconfigure(8) completion
|
|
#
|
|
_dpkg_reconfigure()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local opt
|
|
|
|
case $prev in
|
|
--frontend | -!(-*)f)
|
|
opt=($(printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/*))
|
|
opt=(${opt[@]##*/})
|
|
opt=(${opt[@]%.pm})
|
|
COMPREPLY=($(compgen -W '${opt[@]}' -- "$cur"))
|
|
return
|
|
;;
|
|
--priority | -!(-*)p)
|
|
COMPREPLY=($(compgen -W 'low medium high critical' -- "$cur"))
|
|
return
|
|
;;
|
|
esac
|
|
|
|
if [[ $cur == -* ]]; then
|
|
COMPREPLY=($(compgen -W '--frontend --priority --all --unseen-only
|
|
--help --showold --force --terse' -- "$cur"))
|
|
else
|
|
COMPREPLY=($(_comp_dpkg_installed_packages "$cur"))
|
|
fi
|
|
} &&
|
|
complete -F _dpkg_reconfigure -o default dpkg-reconfigure
|
|
|
|
# ex: filetype=sh
|