245 lines
7.7 KiB
Plaintext
245 lines
7.7 KiB
Plaintext
|
# This function is required by _dpkg() and _dpkg-reconfigure()
|
||
|
have dpkg && {
|
||
|
have grep-status && {
|
||
|
_comp_dpkg_installed_packages()
|
||
|
{
|
||
|
grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package
|
||
|
}
|
||
|
} || {
|
||
|
_comp_dpkg_installed_packages()
|
||
|
{
|
||
|
command grep -A 1 "Package: $1" /var/lib/dpkg/status | \
|
||
|
command grep -B 1 -Ee "ok installed|half-installed|unpacked| \
|
||
|
half-configured|config-files" \
|
||
|
-Ee "^Essential: yes" | \
|
||
|
command grep "Package: $1" | cut -d\ -f2
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Debian dpkg(8) completion
|
||
|
#
|
||
|
_dpkg()
|
||
|
{
|
||
|
local cur prev i
|
||
|
|
||
|
COMPREPLY=()
|
||
|
_get_comp_words_by_ref cur prev
|
||
|
i=$COMP_CWORD
|
||
|
|
||
|
_expand || return 0
|
||
|
|
||
|
_split_longopt
|
||
|
|
||
|
# find the last option flag
|
||
|
if [[ $cur != -* ]]; then
|
||
|
while [[ $prev != -* && $i != 1 ]]; do
|
||
|
i=$((i-1))
|
||
|
prev=${COMP_WORDS[i-1]}
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
case $prev in
|
||
|
-c|-i|-A|-I|-f|-e|-x|-X|-W|--install|--unpack|--record-avail| \
|
||
|
--contents|--info|--fsys-tarfile|--field|--control|--extract| \
|
||
|
--show)
|
||
|
_filedir '?(u)deb'
|
||
|
return 0
|
||
|
;;
|
||
|
-b|--build)
|
||
|
_filedir -d
|
||
|
return 0
|
||
|
;;
|
||
|
-s|-p|-l|--status|--print-avail|--list)
|
||
|
COMPREPLY=( $( apt-cache pkgnames "$cur" 2>/dev/null ) )
|
||
|
return 0
|
||
|
;;
|
||
|
-S|--search)
|
||
|
_filedir
|
||
|
return 0
|
||
|
;;
|
||
|
-r|-L|-P|--remove|--purge|--listfiles)
|
||
|
COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
*)
|
||
|
COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \
|
||
|
--configure -r --remove -P --purge --get-selections \
|
||
|
--set-selections --update-avail --merge-avail \
|
||
|
--clear-avail --command-fd --forget-old-unavail -s \
|
||
|
--status -p --print-avail -L --listfiles -l --list \
|
||
|
-S --search -C --audit --print-architecture \
|
||
|
--print-gnu-build-architecture \
|
||
|
--print-installation-architecture \
|
||
|
--compare-versions --help --version --force-help \
|
||
|
--force-all --force-auto-select --force-downgrade \
|
||
|
--force-configure-any --force-hold --force-bad-path \
|
||
|
--force-not-root --force-overwrite \
|
||
|
--force-overwrite-diverted --force-bad-verify \
|
||
|
--force-depends-version --force-depends \
|
||
|
--force-confnew --force-confold --force-confdef \
|
||
|
--force-confmiss --force-conflicts --force-architecture\
|
||
|
--force-overwrite-dir --force-remove-reinstreq \
|
||
|
--force-remove-essential -Dh \
|
||
|
--debug=help --licence --admindir --root --instdir \
|
||
|
-O --selected-only -E --skip-same-version \
|
||
|
-G --refuse-downgrade -B --auto-deconfigure \
|
||
|
--no-debsig --no-act -D --debug --status-fd \
|
||
|
-b --build -I --info -f --field -c --contents \
|
||
|
-x --extract -X --vextract --fsys-tarfile -e --control \
|
||
|
--ignore-depends --abort-after' -- "$cur" ) )
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
|
||
|
}
|
||
|
complete -F _dpkg dpkg dpkg-deb
|
||
|
}
|
||
|
|
||
|
# Debian GNU dpkg-reconfigure(8) completion
|
||
|
#
|
||
|
have dpkg-reconfigure &&
|
||
|
_dpkg_reconfigure()
|
||
|
{
|
||
|
local cur prev opt
|
||
|
|
||
|
COMPREPLY=()
|
||
|
_get_comp_words_by_ref cur prev
|
||
|
|
||
|
case $prev in
|
||
|
-f|--frontend)
|
||
|
opt=( $( printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/* ) )
|
||
|
opt=( ${opt[@]##*/} )
|
||
|
opt=( ${opt[@]%.pm} )
|
||
|
COMPREPLY=( $( compgen -W '${opt[@]}' -- "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
-p|--priority)
|
||
|
COMPREPLY=( $( compgen -W 'low medium high critical' -- "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
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
|
||
|
|
||
|
# Debian dpkg-source completion
|
||
|
#
|
||
|
have dpkg-source &&
|
||
|
_dpkg_source()
|
||
|
{
|
||
|
local cur prev options work i action packopts unpackopts fields
|
||
|
|
||
|
packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sr -ss -sA -sK -sP \
|
||
|
-sU -sR"
|
||
|
unpackopts="-sp -sn -su"
|
||
|
options="-x -b $packopts $unpackopts"
|
||
|
fields="Format Source Version Binary Maintainer Uploader Architecture \
|
||
|
Standards-Version Build-Depends Files"
|
||
|
|
||
|
COMPREPLY=()
|
||
|
_get_comp_words_by_ref cur prev
|
||
|
|
||
|
action="options"
|
||
|
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
|
||
|
if [[ ${COMP_WORDS[$i]} == "-x" ]]; then
|
||
|
action=unpack
|
||
|
elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then
|
||
|
action=pack
|
||
|
elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then
|
||
|
action=help
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
case $action in
|
||
|
unpack)
|
||
|
case $prev in
|
||
|
-x)
|
||
|
_filedir -d
|
||
|
_filedir 'dsc'
|
||
|
return 0
|
||
|
;;
|
||
|
*)
|
||
|
COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) )
|
||
|
_filedir -d
|
||
|
_filedir
|
||
|
return 0
|
||
|
;;
|
||
|
esac
|
||
|
return 0
|
||
|
;;
|
||
|
pack)
|
||
|
case $prev in
|
||
|
-b)
|
||
|
_filedir -d
|
||
|
return 0
|
||
|
;;
|
||
|
-c|-l|-T|-i|-I)
|
||
|
# -c: get controlfile
|
||
|
# -l: get per-version info from this file
|
||
|
# -T: read variables here, not debian/substvars
|
||
|
# -i: <regexp> filter out files to ignore diffs of.
|
||
|
# -I: filter out files when building tarballs.
|
||
|
# return directory names and file names
|
||
|
_filedir -d
|
||
|
_filedir
|
||
|
return 0
|
||
|
;;
|
||
|
-F)
|
||
|
# -F: force change log format
|
||
|
COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) )
|
||
|
return 0
|
||
|
;;
|
||
|
-V|-D)
|
||
|
# -V: set a substitution variable
|
||
|
# we don't know anything about possible variables or values
|
||
|
# so we don't try to suggest any completion.
|
||
|
COMPREPLY=()
|
||
|
return 0
|
||
|
;;
|
||
|
-D)
|
||
|
# -D: override or add a .dsc field and value
|
||
|
# if $cur doesn't contain a = yet, suggest variable names
|
||
|
if [[ "$cur" == *=* ]]; then
|
||
|
# $cur contains a "="
|
||
|
COMPREPLY=()
|
||
|
return 0
|
||
|
else
|
||
|
COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
|
||
|
return 0
|
||
|
fi
|
||
|
;;
|
||
|
-U)
|
||
|
# -U: remove a field
|
||
|
# Suggest possible fieldnames
|
||
|
COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
*)
|
||
|
COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
esac
|
||
|
return 0
|
||
|
;;
|
||
|
*)
|
||
|
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
|
||
|
return 0
|
||
|
;;
|
||
|
esac
|
||
|
} &&
|
||
|
complete -F _dpkg_source dpkg-source
|
||
|
|
||
|
# Local variables:
|
||
|
# mode: shell-script
|
||
|
# sh-basic-offset: 4
|
||
|
# sh-indent-comment: t
|
||
|
# indent-tabs-mode: nil
|
||
|
# End:
|
||
|
# ex: ts=4 sw=4 et filetype=sh
|