1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 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
|