diff options
author | David Paleino <dapal@debian.org> | 2011-11-03 12:32:52 +0100 |
---|---|---|
committer | David Paleino <dapal@debian.org> | 2011-11-03 12:32:52 +0100 |
commit | 2c8171c38d87ddef31c92a76547d3fdf773a1337 (patch) | |
tree | 5e720d5a06ead72ed55454bf6647a712a761ed91 /completions/dpkg-source | |
parent | 9920a8faedf704420571d8072ccab27e9dac40ba (diff) | |
download | bash-completion-2c8171c38d87ddef31c92a76547d3fdf773a1337.tar.gz |
Imported Upstream version 1.90upstream/1.90
Diffstat (limited to 'completions/dpkg-source')
-rw-r--r-- | completions/dpkg-source | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/completions/dpkg-source b/completions/dpkg-source new file mode 100644 index 00000000..6cd9bde3 --- /dev/null +++ b/completions/dpkg-source @@ -0,0 +1,107 @@ +# Debian dpkg-source completion -*- shell-script -*- + +_dpkg_source() +{ + local cur prev words cword + _init_completion || return + + local options work i action packopts unpackopts fields + + 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="-x -b $packopts $unpackopts" + fields="Format Source Version Binary Maintainer Uploader Architecture \ + Standards-Version Build-Depends Files" + + action="options" + for (( i=0; i < ${#words[@]}-1; i++ )); do + if [[ ${words[$i]} == "-x" ]]; then + action=unpack + elif [[ ${words[$i]} == "-b" ]]; then + action=pack + elif [[ ${words[$i]} == "-h" ]]; then + action=help + fi + done + + case $action in + unpack) + case $prev in + -x) + _filedir -d + _filedir 'dsc' + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) ) + _filedir -d + _filedir + return 0 + ;; + esac + return 0 + ;; + pack) + case $prev in + -b) + _filedir -d + 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 + _filedir -d + _filedir + return 0 + ;; + -F) + # -F: force change log format + COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) ) + 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 [[ "$cur" == *=* ]]; then + # $cur contains a "=" + COMPREPLY=() + return 0 + else + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) + return 0 + fi + ;; + -U) + # -U: remove a field + # Suggest possible fieldnames + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) ) + return 0 + ;; + esac + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + return 0 + ;; + esac +} && +complete -F _dpkg_source dpkg-source + +# ex: ts=4 sw=4 et filetype=sh |