summaryrefslogtreecommitdiff
path: root/contrib/gpg2
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gpg2')
-rw-r--r--contrib/gpg244
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
+}