[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 1924616663fac97f929309c95cbeb450509aa455
David Paleino
d.paleino at gmail.com
Fri Jun 5 19:40:08 UTC 2009
The following commit has been merged in the master branch:
commit 1924616663fac97f929309c95cbeb450509aa455
Author: David Paleino <d.paleino at gmail.com>
Date: Fri Jun 5 21:39:46 2009 +0200
Split dpkg-related completions to contrib/dpkg (and re-enable usage of grep-status if available)
diff --git a/CHANGES b/CHANGES
index c3213f2..d80f0b3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -27,6 +27,8 @@ bash-completion (1.x)
* Split cvs-related completions to contrib/cvs
* Split man completion to contrib/man
* Split bash builtins completions to contrib/bash-builtins
+ * Split dpkg-related completions to contrib/dpkg (and re-enable usage
+ of grep-status if available)
[ Ville Skyttä ]
* Split yum and yum-arch completion into contrib/yum.
diff --git a/Makefile.am b/Makefile.am
index f5678ba..3329c50 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -29,6 +29,7 @@ bashcomp_DATA = contrib/ant \
contrib/dd \
contrib/dhclient \
contrib/dict \
+ contrib/dpkg \
contrib/dsniff \
contrib/findutils \
contrib/freeciv \
diff --git a/bash_completion b/bash_completion
index b68f7ee..a8d67f5 100644
--- a/bash_completion
+++ b/bash_completion
@@ -1513,273 +1513,6 @@ _cardctl()
} &&
complete -F _cardctl cardctl
-# This function is required by _dpkg() and _dpkg-reconfigure()
-#
-# TODO: Ubuntu (and Debian) folks removed the "have grep-status" part. In my Debian I got it,
-# and I believe it's ok if we leave it like it is now. Was that removed because
-# of Ubuntu's (and Debian's? :() inner weirdness? :) -- David (hanska-guest)
-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()
-{
- grep -A 1 "Package: $1" /var/lib/dpkg/status | \
- grep -B 1 -Ee "ok installed|half-installed|unpacked| \
- half-configured|config-files" \
- -Ee "^Essential: yes" | \
- grep "Package: $1" | cut -d\ -f2
-}
-#}
-
-# Debian dpkg(8) completion
-#
-_dpkg()
-{
- local cur prev i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- 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|-@(install|unpack|record-avail|contents|info|fsys-tarfile|field|control|extract)))
- _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 $filenames dpkg dpkg-deb
-}
-
-# Debian GNU dpkg-reconfigure(8) completion
-#
-have dpkg-reconfigure &&
-_dpkg_reconfigure()
-{
- local cur prev opt
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
-
- case "$prev" in
- -@(f|-frontend))
- opt=( $( echo /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 '-f --frontend -p --priority -a --all \
- -u --unseen-only -h --help -s --showold \
- --force --terse' -- $cur ) )
- else
- COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
- fi
-} &&
-complete -F _dpkg_reconfigure $default dpkg-reconfigure
-
-# Debian dpkg-source completion
-#
-have dpkg-source &&
-_dpkg_source()
-{
- local cur prev options work i action packopts unpackopts
-
- packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR"
- unpackopts="-sp -sn -su"
- options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo`
-
- COMPREPLY=()
- if [ "$1" != "dpkg-source" ]; then
- return 1
- fi
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- 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
- # if currently seeing a complete option, return just itself.
- for i in $options; do
- if [ "$cur" = "$i" ]; then
- COMPREPLY=( "$cur" )
- return 0
- fi
- done
- case "$action" in
- "unpack")
- if [ "$cur" = "-" -o "$cur" = "-s" ]; then
- COMPREPLY=( $unpackopts )
- return 0
- fi
- case "$prev" in
- "-x")
- COMPREPLY=( $( compgen -d -- "$cur" ) \
- $( compgen -f -X '!*.dsc' -- "$cur" ) )
- return 0
- ;;
- *)
- COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) )
- return 0
- ;;
- esac
- return 0
- ;;
- "pack")
- if [ "$cur" = "-" ]; then
- COMPREPLY=( $packopts )
- return 0
- fi
- if [ "$cur" = "-s" ]; then
- COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
- "-sA" "-sK" "-sP" "-sU" "-sR" )
- return 0
- fi
- case "$prev" in
- "-b")
- COMPREPLY=( $( compgen -d -- "$cur" ) )
- 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
- COMPREPLY=( $( compgen -d -f ) )
- return 0
- ;;
- "-F")
- # -F: force change log format
- COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) )
- 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 echo -- "$cur" | grep -q "="; then
- # $cur contains a "="
- COMPREPLY=()
- return 0
- else
- COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
- return 0
- fi
- ;;
- "-U")
- # -U: remove a field
- # Suggest possible fieldnames
- COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
- return 0
- ;;
- *)
- COMPREPLY=( $packopts )
- return 0
- ;;
- esac
- return 0
- ;;
- *)
- # if seeing a partial option, return possible completions.
- if [ "$cur" = "-s" ]; then
- COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
- "-sA" "-sK" "-sP" "-sU" "-sR" )
- return 0
- fi
- # else return all possible options.
- COMPREPLY=( $options )
- return 0
- ;;
- esac
-} &&
-complete -F _dpkg_source dpkg-source
-
# Debian Linux dselect(8) completion.
#
have dselect &&
diff --git a/contrib/dpkg b/contrib/dpkg
new file mode 100644
index 0000000..fac1ae3
--- /dev/null
+++ b/contrib/dpkg
@@ -0,0 +1,262 @@
+# 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()
+{
+ grep -A 1 "Package: $1" /var/lib/dpkg/status | \
+ grep -B 1 -Ee "ok installed|half-installed|unpacked| \
+ half-configured|config-files" \
+ -Ee "^Essential: yes" | \
+ grep "Package: $1" | cut -d\ -f2
+}
+}
+
+# Debian dpkg(8) completion
+#
+_dpkg()
+{
+ local cur prev i
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ 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|-@(install|unpack|record-avail|contents|info|fsys-tarfile|field|control|extract)))
+ _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 $filenames dpkg dpkg-deb
+}
+
+# Debian GNU dpkg-reconfigure(8) completion
+#
+have dpkg-reconfigure &&
+_dpkg_reconfigure()
+{
+ local cur prev opt
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+
+ case "$prev" in
+ -@(f|-frontend))
+ opt=( $( echo /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 '-f --frontend -p --priority -a --all \
+ -u --unseen-only -h --help -s --showold \
+ --force --terse' -- $cur ) )
+ else
+ COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
+ fi
+} &&
+complete -F _dpkg_reconfigure $default dpkg-reconfigure
+
+# Debian dpkg-source completion
+#
+have dpkg-source &&
+_dpkg_source()
+{
+ local cur prev options work i action packopts unpackopts
+
+ packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR"
+ unpackopts="-sp -sn -su"
+ options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo`
+
+ COMPREPLY=()
+ if [ "$1" != "dpkg-source" ]; then
+ return 1
+ fi
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ 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
+ # if currently seeing a complete option, return just itself.
+ for i in $options; do
+ if [ "$cur" = "$i" ]; then
+ COMPREPLY=( "$cur" )
+ return 0
+ fi
+ done
+ case "$action" in
+ "unpack")
+ if [ "$cur" = "-" -o "$cur" = "-s" ]; then
+ COMPREPLY=( $unpackopts )
+ return 0
+ fi
+ case "$prev" in
+ "-x")
+ COMPREPLY=( $( compgen -d -- "$cur" ) \
+ $( compgen -f -X '!*.dsc' -- "$cur" ) )
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ return 0
+ ;;
+ "pack")
+ if [ "$cur" = "-" ]; then
+ COMPREPLY=( $packopts )
+ return 0
+ fi
+ if [ "$cur" = "-s" ]; then
+ COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
+ "-sA" "-sK" "-sP" "-sU" "-sR" )
+ return 0
+ fi
+ case "$prev" in
+ "-b")
+ COMPREPLY=( $( compgen -d -- "$cur" ) )
+ 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
+ COMPREPLY=( $( compgen -d -f ) )
+ return 0
+ ;;
+ "-F")
+ # -F: force change log format
+ COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) )
+ 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 echo -- "$cur" | grep -q "="; then
+ # $cur contains a "="
+ COMPREPLY=()
+ return 0
+ else
+ COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
+ return 0
+ fi
+ ;;
+ "-U")
+ # -U: remove a field
+ # Suggest possible fieldnames
+ COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $packopts )
+ return 0
+ ;;
+ esac
+ return 0
+ ;;
+ *)
+ # if seeing a partial option, return possible completions.
+ if [ "$cur" = "-s" ]; then
+ COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
+ "-sA" "-sK" "-sP" "-sU" "-sR" )
+ return 0
+ fi
+ # else return all possible options.
+ COMPREPLY=( $options )
+ return 0
+ ;;
+ esac
+} &&
+complete -F _dpkg_source dpkg-source
--
bash-completion
More information about the Bash-completion-commits
mailing list