#  Copyright (C) 2003 Ingo K"ohne
#  
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License along
#  with this program; if not, write to the Free Software Foundation, Inc.,
#  59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

. ../include/common

gpg_name_C="gpg -q --list-keys \"\$XPC_PATTERN\" 2>&1 | grep -v error | cut -c32- | sed  's/ *< */</;s/ *> *//' | tr '<' '\n' |grep -e\"^\${XPC_PATTERN%%[^[:alnum:]]*}\" #"
gpg_key_id_C=":"
gpg_cipher_algo_C="gpg --version | sed -n '/^Cipher/{;s/.*: //;s/, / /g;p;}' |tr ' ' '\n' #"
gpg_digest_algo_C="gpg --version | sed -n '/^Hash/{;s/.*: //;s/, / /g;p;}' |tr ' ' '\n' #"
cmd=gpg

# these are 'commands' (s. man page):
# their arguments are completed in the NONOPT section

optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd sign s
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd clearsign
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd detach-sign b
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd e encrypt
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd symmetric c
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd store
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd decrypt
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd verify
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd verify-files
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd list-keys
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd decrypt list-public-keys decrypt list-secret-keys list-sigs check-sigs fingerprint
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd list-packets
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd gen-key
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd edit-key sign-key lsign-key nrsign-key delete-key delete-secret-key delete-secret-and-public-key
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd gen-revoke
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd export send-keys export-all export-secret-keys export-secret-subkeys
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd import fast-import
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd recv-keys
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd search-keys
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd update-trustdb
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd check-trustdb
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd export-ownertrust
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd import-ownertrust
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd print-md
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd print-mds
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd gen-random
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd gen-prime
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd version
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd warranty
optcomplete -V cmd -T '-z "$XPC_cmd"'  $cmd h help

# these are 'options' (s. man page):

optcomplete -T '-z "$XPC_cmd"'  $cmd a armor
optcomplete -T '-z "$XPC_cmd"' -f  $cmd o output
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_name_C"  $cmd u local-user
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_name_C"  $cmd default-key
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_name_C"  $cmd r recipient
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_name_C"  $cmd default-recipient
optcomplete -T '-z "$XPC_cmd"'  $cmd default-recipient-self
optcomplete -T '-z "$XPC_cmd"'  $cmd no-default-recipient
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_name_C"  $cmd encrypt-to
optcomplete -T '-z "$XPC_cmd"'  $cmd no-encrypt-to
optcomplete -T '-z "$XPC_cmd"'  $cmd verbose v
optcomplete -T '-z "$XPC_cmd"'  $cmd quiet q
optcomplete -T '-z "$XPC_cmd"' -W '0 1 2 3 4 5 6 7 8 9'  $cmd z
optcomplete -T '-z "$XPC_cmd"'  $cmd textmode t
optcomplete -T '-z "$XPC_cmd"'  $cmd n dry-run
optcomplete -T '-z "$XPC_cmd"'  $cmd i interactive
optcomplete -T '-z "$XPC_cmd"'  $cmd batch
optcomplete -T '-z "$XPC_cmd"'  $cmd no-tty
optcomplete -T '-z "$XPC_cmd"'  $cmd no-batch
optcomplete -T '-z "$XPC_cmd"'  $cmd yes
optcomplete -T '-z "$XPC_cmd"'  $cmd no
optcomplete -T '-z "$XPC_cmd"' -W '0 1 2 3'  $cmd default-cert-check-level
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_key_id_C"  $cmd trusted-key
optcomplete -T '-z "$XPC_cmd"'  $cmd always-trust
optcomplete -T '-z "$XPC_cmd"'-m rlhint -C "
case \"\$XPC_PATTERN\" in
*:*)
	echo -e \"\eprefix=\${XPC_PATTERN%%:*}:\"
	;;
*)
	echo -e \"\eappend=:\"
	echo -e \"hkp\nldap\nmailto\"
esac #"  $cmd keyserver
optcomplete -T '-z "$XPC_cmd"' -O, -W 'include-revoked include-disabled use-temp-files keep-temp-files verbose honor-http-proxy auto-key-retrieve'  $cmd keyserver-options
optcomplete -T '-z "$XPC_cmd"'  $cmd show-photos
optcomplete -T '-z "$XPC_cmd"'  $cmd no-show-photos
optcomplete -T '-z "$XPC_cmd"' -D 'photo viewer commandline'  $cmd photo-viewer
optcomplete -T '-z "$XPC_cmd"'  $cmd show-keyring
optcomplete -T '-z "$XPC_cmd"' -f  $cmd keyring
optcomplete -T '-z "$XPC_cmd"' -f  $cmd secret-keyring
optcomplete -T '-z "$XPC_cmd"' -d  $cmd homedir
optcomplete -T '-z "$XPC_cmd"' -W ' iso-8859-1 iso-8859-2 koi8-r utf-8'  $cmd charset
optcomplete -T '-z "$XPC_cmd"'  $cmd utf8-strings
optcomplete -T '-z "$XPC_cmd"'  $cmd no-utf8-strings
optcomplete -T '-z "$XPC_cmd"' -f  $cmd options
optcomplete -T '-z "$XPC_cmd"'  $cmd no-options
optcomplete -T '-z "$XPC_cmd"' -m rlhint -C '
case "$XPC_PATTERN" in
*/*)	echo -e "\\efilename"
	compgen -f -- "$XPC_PATTERN"
	;;
*)	ls /usr/lib/gnupg
	;;
esac #'  $cmd load-extension
optcomplete -T '-z "$XPC_cmd"' -C '#debug flags'  $cmd debug
optcomplete -T '-z "$XPC_cmd"'  $cmd debug-all
optcomplete -T '-z "$XPC_cmd"' -D 'file descriptor'  $cmd status-fd
optcomplete -T '-z "$XPC_cmd"' -D 'file descriptor'  $cmd logger-fd
optcomplete -T '-z "$XPC_cmd"'  $cmd no-comment
optcomplete -T '-z "$XPC_cmd"' -D 'clear text signature comment'  $cmd comment
optcomplete -T '-z "$XPC_cmd"'  $cmd default-comment
optcomplete -T '-z "$XPC_cmd"'  $cmd no-version
optcomplete -T '-z "$XPC_cmd"'  $cmd emit-version
optcomplete -T '-z "$XPC_cmd"' -D 'notation data: name=value'  $cmd N notation-data
optcomplete -T '-z "$XPC_cmd"'  $cmd show-notation
optcomplete -T '-z "$XPC_cmd"'  $cmd no-show-notation
optcomplete -T '-z "$XPC_cmd"' -C :  $cmd set-policy-url
optcomplete -T '-z "$XPC_cmd"'  $cmd show-policy-url
optcomplete -T '-z "$XPC_cmd"'  $cmd no-show-policy-url
optcomplete -T '-z "$XPC_cmd"' -f  $cmd set-filename
optcomplete -T '-z "$XPC_cmd"'  $cmd for-your-eyes-only
optcomplete -T '-z "$XPC_cmd"'  $cmd no-for-your-eyes-only
optcomplete -T '-z "$XPC_cmd"'  $cmd use-embedded-filename
optcomplete -T '-z "$XPC_cmd"' -D 'user count'  $cmd completes-needed
optcomplete -T '-z "$XPC_cmd"' -D 'user count'  $cmd marginals-needed
optcomplete -T '-z "$XPC_cmd"' -C :  $cmd max-cert-depth
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_cipher_algo_C"  $cmd cipher-algo
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_digest_algo_C"  $cmd digest-algo
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_cipher_algo_C"  $cmd s2k-cipher-algo
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_digest_algo_C"  $cmd s2k-digest-algo
optcomplete -T '-z "$XPC_cmd"' -W '0 1 3'  $cmd s2k-mode
optcomplete -T '-z "$XPC_cmd"'  $cmd simple-sk-checksum
optcomplete -T '-z "$XPC_cmd"' -W '0 1 2'  $cmd compress-algo
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_cipher_algo_C"  $cmd disable-cipher-algo
optcomplete -T '-z "$XPC_cmd"' -C "$gpg_digest_algo_C"  $cmd disable-pubkey-algo
optcomplete -T '-z "$XPC_cmd"'  $cmd no-sig-cache
optcomplete -T '-z "$XPC_cmd"'  $cmd no-sig-create-check
optcomplete -T '-z "$XPC_cmd"'  $cmd auto-check-trustdb
optcomplete -T '-z "$XPC_cmd"'  $cmd no-auto-check-trustdb
optcomplete -T '-z "$XPC_cmd"'  $cmd throw-keyid
optcomplete -T '-z "$XPC_cmd"'  $cmd not-dash-escaped
optcomplete -T '-z "$XPC_cmd"'  $cmd escape-from-lines
optcomplete -T '-z "$XPC_cmd"' -D 'file descriptor'  $cmd passphrase-fd
optcomplete -T '-z "$XPC_cmd"' -D 'file descriptor'  $cmd command-fd
optcomplete -T '-z "$XPC_cmd"'  $cmd use-agent
optcomplete -T '-z "$XPC_cmd"'  $cmd gpg-agent-info
optcomplete -T '-z "$XPC_cmd"'  $cmd rfc1991
optcomplete -T '-z "$XPC_cmd"'  $cmd pgp2
optcomplete -T '-z "$XPC_cmd"'  $cmd no-pgp2
optcomplete -T '-z "$XPC_cmd"'  $cmd pgp6
optcomplete -T '-z "$XPC_cmd"'  $cmd no-pgp6
optcomplete -T '-z "$XPC_cmd"'  $cmd openpgp
optcomplete -T '-z "$XPC_cmd"'  $cmd force-v3-sigs
optcomplete -T '-z "$XPC_cmd"'  $cmd no-force-v3-sigs
optcomplete -T '-z "$XPC_cmd"'  $cmd force-v4-certs
optcomplete -T '-z "$XPC_cmd"'  $cmd no-force-v4-certs
optcomplete -T '-z "$XPC_cmd"'  $cmd force-mdc
optcomplete -T '-z "$XPC_cmd"'  $cmd allow-non-selfsigned-uid
optcomplete -T '-z "$XPC_cmd"'  $cmd no-allow-non-selfsigned-uid
optcomplete -T '-z "$XPC_cmd"'  $cmd allow-freeform-uid
optcomplete -T '-z "$XPC_cmd"'  $cmd ignore-time-conflict
optcomplete -T '-z "$XPC_cmd"'  $cmd ignore-valid-from
optcomplete -T '-z "$XPC_cmd"'  $cmd ignore-crc-error
optcomplete -T '-z "$XPC_cmd"'  $cmd lock-once
optcomplete -T '-z "$XPC_cmd"'  $cmd lock-multiple
optcomplete -T '-z "$XPC_cmd"'  $cmd lock-never
optcomplete -T '-z "$XPC_cmd"'  $cmd no-random-seed-file
optcomplete -T '-z "$XPC_cmd"'  $cmd no-verbose
optcomplete -T '-z "$XPC_cmd"'  $cmd no-greeting
optcomplete -T '-z "$XPC_cmd"'  $cmd no-secmem-warning
optcomplete -T '-z "$XPC_cmd"'  $cmd no-permission-warning
optcomplete -T '-z "$XPC_cmd"'  $cmd no-armor
optcomplete -T '-z "$XPC_cmd"'  $cmd no-default-keyring
optcomplete -T '-z "$XPC_cmd"'  $cmd skip-verify
optcomplete -T '-z "$XPC_cmd"'  $cmd with-colons
optcomplete -T '-z "$XPC_cmd"'  $cmd with-key-data
optcomplete -T '-z "$XPC_cmd"'  $cmd with-fingerprint
optcomplete -T '-z "$XPC_cmd"'  $cmd fast-list-mode
optcomplete -T '-z "$XPC_cmd"'  $cmd fixed-list-mode
optcomplete -T '-z "$XPC_cmd"'  $cmd list-only
optcomplete -T '-z "$XPC_cmd"'  $cmd no-literal
optcomplete -T '-z "$XPC_cmd"'  $cmd set-filesize
optcomplete -T '-z "$XPC_cmd"'  $cmd emulate-md-encode-bug
optcomplete -T '-z "$XPC_cmd"'  $cmd show-session-key
optcomplete -T '-z "$XPC_cmd"' -C :  $cmd override-session-key
optcomplete -T '-z "$XPC_cmd"'  $cmd ask-sig-expire
optcomplete -T '-z "$XPC_cmd"'  $cmd no-ask-sig-expire
optcomplete -T '-z "$XPC_cmd"'  $cmd ask-cert-expire
optcomplete -T '-z "$XPC_cmd"'  $cmd no-ask-cert-expire
optcomplete -T '-z "$XPC_cmd"'  $cmd expert
optcomplete -T '-z "$XPC_cmd"'  $cmd no-expert
optcomplete -T '-z "$XPC_cmd"'  $cmd merge-only
optcomplete -T '-z "$XPC_cmd"'  $cmd allow-secret-key-import
optcomplete -T '-z "$XPC_cmd"'  $cmd try-all-secrets
optcomplete -T '-z "$XPC_cmd"'  $cmd enable-special-filenames
optcomplete -T '-z "$XPC_cmd"'  $cmd no-expensive-trust-checks
optcomplete -T '-z "$XPC_cmd"'  $cmd preserve-permissions
optcomplete -T '-z "$XPC_cmd"' -C :  $cmd preference-list
optcomplete -m rlhint -C "
case \"\$XPC_cmd\" in
export-ownertrust|decrypt)
	case \"\$XPC_NONOPT_NO\" in
	1)	echo -e \"\efilename\"
		compgen -f -- \"\$XPC_PATTERN\" ;;
	esac
	;;		
print-md)
	case \"\$XPC_NONOPT_NO\" in
	1)	$gpg_digest_algo_C
		;;
	*)	echo -e \"\efilename\"
		compgen -f -- \"\$XPC_PATTERN\" ;;
	esac
	;;		
import-ownertrust|verify|verify-files|import|fast-import|print-mds)
	echo -e \"\efilename\"
	compgen -f -- \"\$XPC_PATTERN\" ;;			
list-*|check-sigs|fingerprint|export|send-keys|export*|search-keys)
	$gpg_name_C
	;;
recv-keys)
	$gpg_key_id_C
	;;
edit-key|*sign-key|delete-*-key)
	case \"\$XPC_NONOPT_NO\" in
	1)	$gpg_name_C
		;;
	esac
	;;
gen-random)
	case \"\$XPC_NONOPT_NO\" in
	1)	echo -e '0\n1\n2' ;;
	2)	echo -e \"\edescription_only=byte count\" ;;
	esac
	;;	
esac #"  $cmd NONOPT
optcomplete -m long,getoptparse,getoptstop  $cmd

complete -F xpcompfunc  $cmd

unset cmd ${!xpc_*}
