contrib/dpkg: update completion to current API

This commit is contained in:
David Paleino 2010-02-09 11:09:04 +01:00
parent 91a8ed2c1d
commit 2491104bac

View File

@ -23,8 +23,7 @@ _dpkg()
local cur prev i local cur prev i
COMPREPLY=() COMPREPLY=()
cur=`_get_cword` _get_comp_words_by_ref cur prev
prev=${COMP_WORDS[COMP_CWORD-1]}
i=$COMP_CWORD i=$COMP_CWORD
_expand || return 0 _expand || return 0
@ -104,9 +103,7 @@ _dpkg_reconfigure()
local cur prev opt local cur prev opt
COMPREPLY=() COMPREPLY=()
cur=`_get_cword` _get_comp_words_by_ref cur prev
prev=${COMP_WORDS[COMP_CWORD-1]}
case $prev in case $prev in
-f|--frontend) -f|--frontend)
@ -123,8 +120,8 @@ _dpkg_reconfigure()
esac esac
if [[ "$cur" == -* ]]; then if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-f --frontend -p --priority -a --all -u \ COMPREPLY=( $(compgen -W '--frontend --priority --all --unseen-only \
--unseen-only -h --help -s --showold --force --terse' -- "$cur" ) ) --help --showold --force --terse' -- "$cur" ) )
else else
COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) )
fi fi
@ -136,18 +133,18 @@ complete -F _dpkg_reconfigure -o default dpkg-reconfigure
have dpkg-source && have dpkg-source &&
_dpkg_source() _dpkg_source()
{ {
local cur prev options work i action packopts unpackopts local cur prev options work i action packopts unpackopts fields
packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR" 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" unpackopts="-sp -sn -su"
options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo` options="-x -b $packopts $unpackopts"
fields="Format Source Version Binary Maintainer Uploader Architecture \
Standards-Version Build-Depends Files"
COMPREPLY=() COMPREPLY=()
if [ "$1" != "dpkg-source" ]; then _get_comp_words_by_ref cur prev
return 1
fi
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
action="options" action="options"
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
if [[ ${COMP_WORDS[$i]} == "-x" ]]; then if [[ ${COMP_WORDS[$i]} == "-x" ]]; then
@ -158,45 +155,28 @@ _dpkg_source()
action=help action=help
fi fi
done 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 case $action in
unpack) unpack)
if [[ "$cur" == - || "$cur" == -s ]]; then
COMPREPLY=( $unpackopts )
return 0
fi
case $prev in case $prev in
-x) -x)
COMPREPLY=( $( compgen -d -- "$cur" ) \ _filedir -d
$( compgen -f -X '!*.dsc' -- "$cur" ) ) _filedir 'dsc'
return 0 return 0
;; ;;
*) *)
COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) ) COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) )
_filedir -d
_filedir
return 0 return 0
;; ;;
esac esac
return 0 return 0
;; ;;
pack) 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 case $prev in
-b) -b)
COMPREPLY=( $( compgen -d -- "$cur" ) ) _filedir -d
return 0 return 0
;; ;;
-c|-l|-T|-i|-I) -c|-l|-T|-i|-I)
@ -206,12 +186,13 @@ _dpkg_source()
# -i: <regexp> filter out files to ignore diffs of. # -i: <regexp> filter out files to ignore diffs of.
# -I: filter out files when building tarballs. # -I: filter out files when building tarballs.
# return directory names and file names # return directory names and file names
COMPREPLY=( $( compgen -d -f ) ) _filedir -d
_filedir
return 0 return 0
;; ;;
-F) -F)
# -F: force change log format # -F: force change log format
COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) ) COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) )
return 0 return 0
;; ;;
-V|-D) -V|-D)
@ -229,32 +210,25 @@ _dpkg_source()
COMPREPLY=() COMPREPLY=()
return 0 return 0
else else
COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
return 0 return 0
fi fi
;; ;;
-U) -U)
# -U: remove a field # -U: remove a field
# Suggest possible fieldnames # Suggest possible fieldnames
COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
return 0 return 0
;; ;;
*) *)
COMPREPLY=( $packopts ) COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) )
return 0 return 0
;; ;;
esac esac
return 0 return 0
;; ;;
*) *)
# if seeing a partial option, return possible completions. COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
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 return 0
;; ;;
esac esac