diff options
Diffstat (limited to 'contrib/gpg2')
-rw-r--r-- | contrib/gpg2 | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/contrib/gpg2 b/contrib/gpg2 new file mode 100644 index 00000000..c41aa0af --- /dev/null +++ b/contrib/gpg2 @@ -0,0 +1,44 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# gpg2(1) completion +# +have gpg2 && { +_gpg2 () +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --homedir) + _filedir -d + return 0 + ;; + -@(s|-sign|-clearsign|-options|-decrypt)) + _filedir + return 0 + ;; + --@(export|@(?(l|nr|nrl)sign|edit)-key)) + # return list of public keys + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p;s@^.*\(<\([^>]*\)>\).*$@\2@p')" -- "$cur" )) + return 0 + ;; + -@(r|-recipient)) + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )) + if [ -e ~/.gnupg/gpg.conf ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf)" -- "$cur")) + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -b -e -c -d -k -K -a -r -u -z -o -v \ + -n -N -i -h -R -t $(gpg2 --dump-options)' -- $cur ) ) + fi +} && +complete -F _gpg2 $default gpg2 +} |