Attached is the current (and seamingly correctly working) version of the completion script.
regards, Sven
#!/bin/bash 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 exit 1 fi cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} action="options" for (( i=0; i < [EMAIL PROTECTED]; 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=( $unpackots ) 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
signature.asc
Description: OpenPGP digital signature