Michael's patch was actually incomplete, I'm attaching an updated
version which completely adds apt support and is now in Ubuntu.

--
Brian Murray
## Description: add bash completion support for the new "apt" command
## Origin/Author: Michael Vogt <michael.v...@ubuntu.com>
## Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=747094
Index: wily/completions/apt
===================================================================
--- /dev/null
+++ wily/completions/apt
@@ -0,0 +1,95 @@
+# Debian apt(8) completion                             -*- shell-script -*-
+
+_apt()
+{
+    local sourcesdir="/etc/apt/sources.list.d"
+    local cur prev words cword
+    _init_completion || return
+
+    # see if the user selected a command already
+    local COMMANDS=("install" "remove" "purge" "show" "list"
+                    "update" "upgrade" "full-upgrade" "dist-upgrade"
+                    "edit-sources" "help")
+
+    local command i
+    for (( i=0; i < ${#words[@]}-1; i++ )); do
+        if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
+            command=${words[i]}
+            break
+        fi
+    done
+
+    # supported options per command
+    if [[ "$cur" == -* ]]; then
+        case $command in
+            install|remove|purge|upgrade|full-upgrade)
+                COMPREPLY=( $( compgen -W '--show-progress
+                  --fix-broken --purge --verbose-versions --auto-remove
+                  --simulate --dry-run
+                  --download
+                  --fix-missing
+                  --fix-policy
+                  --ignore-hold
+                  --force-yes
+                  --trivial-only
+                  --reinstall --solver' -- "$cur" ) )
+                return 0
+                ;;
+            update)
+                COMPREPLY=( $( compgen -W '--list-cleanup 
+                  ' -- "$cur" ) )
+                return 0
+                ;;
+            list)
+                COMPREPLY=( $( compgen -W '--installed --upgradable 
+                  --manual-installed
+                  -v --verbose
+                  -a --all-versions
+                  ' -- "$cur" ) )
+                return 0
+                ;;
+            show)
+                COMPREPLY=( $( compgen -W '-a --all-versions
+                  ' -- "$cur" ) )
+                return 0
+                ;;
+        esac
+    fi
+
+    # specific command arguments
+    if [[ -n $command ]]; then
+        case $command in
+            remove|purge)
+                if [[ -f /etc/debian_version ]]; then
+                    # Debian system
+                    COMPREPLY=( $( \
+                        _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
+                else
+                    # assume RPM based
+                    _xfunc rpm _rpm_installed_packages
+                fi
+                return 0
+                ;;
+            install|show|list)
+                COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
+                    2> /dev/null ) )
+                return 0
+                ;;
+            edit-sources)
+                COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
+                    -- "$cur" ) )
+                return 0
+                ;;
+        esac
+    fi
+
+    # no command yet, show what commands we have
+    if [ "$command" = "" ]; then
+        COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) )
+    fi
+
+    return 0
+} &&
+complete -F _apt apt
+
+# ex: ts=4 sw=4 et filetype=sh
Index: wily/completions/Makefile.am
===================================================================
--- wily.orig/completions/Makefile.am
+++ wily/completions/Makefile.am
@@ -7,6 +7,7 @@ bashcomp_DATA = a2x \
 		alias \
 		ant \
 		apache2ctl \
+		apt \
 		apt-build \
 		apt-cache \
 		apt-get \
Index: wily/completions/Makefile.in
===================================================================
--- wily.orig/completions/Makefile.in
+++ wily/completions/Makefile.in
@@ -178,6 +178,7 @@ bashcomp_DATA = a2x \
 		alias \
 		ant \
 		apache2ctl \
+		apt \
 		apt-build \
 		apt-cache \
 		apt-get \

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Bash-completion-devel mailing list
Bash-completion-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/bash-completion-devel

Reply via email to