From 2491104bac1e7ed1d0c58924d6c00bc3c94d5618 Mon Sep 17 00:00:00 2001 From: David Paleino Date: Tue, 9 Feb 2010 11:09:04 +0100 Subject: [PATCH] contrib/dpkg: update completion to current API --- contrib/dpkg | 78 ++++++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/contrib/dpkg b/contrib/dpkg index 69493b34..a70ccef8 100644 --- a/contrib/dpkg +++ b/contrib/dpkg @@ -23,8 +23,7 @@ _dpkg() local cur prev i COMPREPLY=() - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} + _get_comp_words_by_ref cur prev i=$COMP_CWORD _expand || return 0 @@ -104,9 +103,7 @@ _dpkg_reconfigure() local cur prev opt COMPREPLY=() - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} - + _get_comp_words_by_ref cur prev case $prev in -f|--frontend) @@ -123,8 +120,8 @@ _dpkg_reconfigure() esac if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-f --frontend -p --priority -a --all -u \ - --unseen-only -h --help -s --showold --force --terse' -- "$cur" ) ) + COMPREPLY=( $(compgen -W '--frontend --priority --all --unseen-only \ + --help --showold --force --terse' -- "$cur" ) ) else COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) fi @@ -136,18 +133,18 @@ complete -F _dpkg_reconfigure -o default dpkg-reconfigure have 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" - 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=() - if [ "$1" != "dpkg-source" ]; then - return 1 - fi - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} + _get_comp_words_by_ref cur prev + action="options" for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do if [[ ${COMP_WORDS[$i]} == "-x" ]]; then @@ -158,45 +155,28 @@ _dpkg_source() 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" == - || "$cur" == -s ]]; then - COMPREPLY=( $unpackopts ) - return 0 - fi case $prev in -x) - COMPREPLY=( $( compgen -d -- "$cur" ) \ - $( compgen -f -X '!*.dsc' -- "$cur" ) ) + _filedir -d + _filedir 'dsc' return 0 ;; *) - COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) ) + COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) ) + _filedir -d + _filedir 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" ) ) + _filedir -d return 0 ;; -c|-l|-T|-i|-I) @@ -206,12 +186,13 @@ _dpkg_source() # -i: filter out files to ignore diffs of. # -I: filter out files when building tarballs. # return directory names and file names - COMPREPLY=( $( compgen -d -f ) ) + _filedir -d + _filedir return 0 ;; -F) # -F: force change log format - COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) ) + COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) ) return 0 ;; -V|-D) @@ -229,32 +210,25 @@ _dpkg_source() COMPREPLY=() return 0 else - COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) return 0 fi ;; -U) # -U: remove a field # Suggest possible fieldnames - COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) return 0 ;; *) - COMPREPLY=( $packopts ) + COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) ) 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 ) + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) return 0 ;; esac