summaryrefslogtreecommitdiff
path: root/completions/apt-get
diff options
context:
space:
mode:
Diffstat (limited to 'completions/apt-get')
-rw-r--r--completions/apt-get74
1 files changed, 46 insertions, 28 deletions
diff --git a/completions/apt-get b/completions/apt-get
index 32c4bcf8..3b00c56a 100644
--- a/completions/apt-get
+++ b/completions/apt-get
@@ -3,7 +3,7 @@
_apt_get()
{
local cur prev words cword
- _init_completion || return
+ _init_completion -n = || return
local special i
for (( i=0; i < ${#words[@]}-1; i++ )); do
@@ -17,57 +17,75 @@ _apt_get()
remove|autoremove|purge)
if [[ -f /etc/debian_version ]]; then
# Debian system
- COMPREPLY=( $( \
- _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
+ COMPREPLY=( $(\
+ _xfunc dpkg _comp_dpkg_installed_packages $cur) )
else
# assume RPM based
_xfunc rpm _rpm_installed_packages
fi
;;
source)
- COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
- 2> /dev/null ) $( apt-cache dumpavail | \
- command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
+ COMPREPLY=( $(apt-cache --no-generate pkgnames "$cur" \
+ 2>/dev/null) $(compgen -W "$(apt-cache dumpavail |
+ awk '$1 == "Source:" { print $2 }' | sort -u)" -- "$cur") )
;;
- *)
- if [[ $special == install && $cur == */* ]]; then
+ install)
+ if [[ $cur == */* ]]; then
_filedir deb
- else
- COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
- 2>/dev/null ) )
+ return
+ elif [[ $cur == *=* ]]; then
+ COMPREPLY=( $(compgen -W "$(\
+ apt-cache --no-generate show "${cur%%=*}" 2>/dev/null |
+ command sed -ne \
+ 's/^Version:[[:space:]]*\([^[:space:]]\)/\1/p')" \
+ -- "${cur#*=}") )
+ return
fi
+ ;;&
+ *)
+ COMPREPLY=( $(apt-cache --no-generate pkgnames "$cur" \
+ 2>/dev/null) )
;;
esac
return
fi
case $prev in
- -c|--config-file)
+ --help|--version|--option|-!(-*)[hvo])
+ return
+ ;;
+ --config-file|-!(-*)c)
_filedir
return
;;
- -t|--target-release|--default-release)
- COMPREPLY=( $( apt-cache policy | \
- command grep "release.o=Debian,a=$cur" | \
- command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
+ --target-release|--default-release|-!(-*)t)
+ COMPREPLY=( $(compgen -W "$(apt-cache policy | command sed -ne \
+ 's/^ *release.*[ ,]o=\(Debian\|Ubuntu\),a=\(\w*\).*/\2/p')" \
+ -- "$cur") )
return
;;
esac
if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o
- --download-only --fix-broken --help --version --ignore-missing
- --fix-missing --no-download --quiet --simulate --just-print
- --dry-run --recon --no-act --yes --assume-yes --show-upgraded
- --only-source --compile --build --ignore-hold --target-release
- --no-upgrade --force-yes --print-uris --purge --reinstall
- --list-cleanup --default-release --trivial-only --no-remove
- --diff-only --no-install-recommends --tar-only --config-file
- --option --auto-remove' -- "$cur" ) )
+ COMPREPLY=( $(compgen -W '--no-install-recommends --install-suggests
+ --download-only --fix-broken --ignore-missing --fix-missing
+ --no-download --quiet --simulate --just-print --dry-run --recon
+ --no-act --yes --assume-yes --assume-no --no-show-upgraded
+ --verbose-versions --host-architecture --build-profiles --compile
+ --build --ignore-hold --with-new-pkgs --no-upgrade --only-upgrade
+ --allow-downgrades --allow-remove-essential
+ --allow-change-held-packages --force-yes --print-uris --purge
+ --reinstall --list-cleanup --target-release --default-release
+ --trivial-only --no-remove --auto-remove --autoremove --only-source
+ --diff-only --dsc-only --tar-only --arch-only --indep-only
+ --allow-unauthenticated --no-allow-insecure-repositories
+ --allow-releaseinfo-change --show-progress --with-source --help
+ --version --config-file --option' -- "$cur") )
else
- COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade
- dist-upgrade install remove purge source build-dep download
- changelog check clean autoclean autoremove' -- "$cur" ) )
+ COMPREPLY=( $(compgen -W 'update upgrade dist-upgrade
+ dselect-upgrade install remove purge source build-dep check
+ download clean autoclean autoremove changelog indextargets' \
+ -- "$cur") )
fi
} &&