mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-03-12 04:36:22 -07:00
120 lines
4.1 KiB
Bash
120 lines
4.1 KiB
Bash
# Debian aptitude(1) completion -*- shell-script -*-
|
|
|
|
_have grep-status && {
|
|
_comp_dpkg_hold_packages()
|
|
{
|
|
grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package
|
|
}
|
|
} || {
|
|
_comp_dpkg_hold_packages()
|
|
{
|
|
command grep -B 2 'hold' /var/lib/dpkg/status |
|
|
awk "/Package: $1/ { print \$2 }"
|
|
}
|
|
}
|
|
|
|
_aptitude()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local special i
|
|
for ((i = 1; i < ${#words[@]} - 1; i++)); do
|
|
if [[ ${words[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full|safe)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag|versions) ]]; then
|
|
special=${words[i]}
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [[ -v special ]]; then
|
|
case $special in
|
|
install | hold | markauto | unmarkauto | dist-upgrade | full-upgrade | \
|
|
safe-upgrade | download | show | changelog | why | why-not | build-dep | \
|
|
add-user-tag | remove-user-tag | versions)
|
|
COMPREPLY=($(_xfunc apt-cache _apt_cache_packages))
|
|
return
|
|
;;
|
|
purge | remove | reinstall | forbid-version)
|
|
COMPREPLY=(
|
|
$(_xfunc dpkg _comp_dpkg_installed_packages "$cur"))
|
|
return
|
|
;;
|
|
unhold)
|
|
COMPREPLY=($(_comp_dpkg_hold_packages "$cur"))
|
|
return
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
case $prev in
|
|
# don't complete anything if these options are found
|
|
autoclean | clean | forget-new | search | upgrade | update | keep-all)
|
|
return
|
|
;;
|
|
-!(-*)S)
|
|
_filedir
|
|
return
|
|
;;
|
|
--display-format | --width | -!(-*)[wFo])
|
|
return
|
|
;;
|
|
--sort | -!(-*)O)
|
|
COMPREPLY=($(compgen -W 'installsize installsizechange debsize
|
|
name priority version' -- "$cur"))
|
|
return
|
|
;;
|
|
--target-release | --default-release | -!(-*)t)
|
|
COMPREPLY=($(apt-cache policy |
|
|
command grep "release.o=Debian,a=$cur" |
|
|
command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2>/dev/null))
|
|
return
|
|
;;
|
|
esac
|
|
|
|
if [[ $cur == -* ]]; then
|
|
local opts=" $($1 --help 2>&1 | command sed -e \
|
|
's/--with(out)-recommends/--without-recommends\n--with-recommends/' |
|
|
_parse_help - | tr '\n' ' ') "
|
|
|
|
# Exclude some mutually exclusive options
|
|
for i in "${words[@]}"; do
|
|
[[ $i == -u ]] && opts=${opts/ -i / }
|
|
[[ $i == -i ]] && opts=${opts/ -u / }
|
|
done
|
|
|
|
# Do known short -> long replacements; at least up to 0.8.12, --help
|
|
# outputs mostly only short ones.
|
|
COMPREPLY=($opts)
|
|
for i in "${!COMPREPLY[@]}"; do
|
|
case ${COMPREPLY[i]} in
|
|
-h) COMPREPLY[i]=--help ;;
|
|
-s) COMPREPLY[i]=--simulate ;;
|
|
-d) COMPREPLY[i]=--download-only ;;
|
|
-P) COMPREPLY[i]=--prompt ;;
|
|
-y) COMPREPLY[i]=--assume-yes ;;
|
|
-F) COMPREPLY[i]=--display-format ;;
|
|
-O) COMPREPLY[i]=--sort ;;
|
|
-W) COMPREPLY[i]=--show-why ;;
|
|
-w) COMPREPLY[i]=--width ;;
|
|
-V) COMPREPLY[i]=--show-versions ;;
|
|
-D) COMPREPLY[i]=--show-deps ;;
|
|
-v) COMPREPLY[i]=--verbose ;;
|
|
-t) COMPREPLY[i]=--target-release ;;
|
|
-q) COMPREPLY[i]=--quiet ;;
|
|
esac
|
|
done
|
|
|
|
COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$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 keep-all build-dep add-user-tag
|
|
remove-user-tag versions' -- "$cur"))
|
|
fi
|
|
|
|
} &&
|
|
complete -F _aptitude -o default aptitude aptitude-curses
|
|
|
|
# ex: filetype=sh
|