The gpg-agent plugin did not work for gpg versions above or equal to
2.1 because of the `--write-env-file` option deprecation. This new version
works fine and also enables the ssh-agent support only if it is enabled in the
gpg-agent config file.
If using the gpg-agent with --enable-ssh-support, the SSH_AUTH_SOCK and
SSH_AGENT_PID environment variables need to be exported once sourced
from GPG_ENV. Otherwise, we get no benefit from the persisting these
values to GPG_ENV; subsequent openned terminals don't see the existent
gpg-agent as a process for an SSH daemon.
The GPG_ENV file is sourced before doing the gpg-connect-agent check,
but this file (unlike the SSH_ENV file) doesn't export GPG_AGENT_INFO,
so the check always fails. This results in new gpg-agents continuously
being spawned.
All this commit does is put in the single export to fix the problem.
Don't just overwrite the environment. First check for a running agent (an
x-session might have one running). If no agent is found, source the
environment and check again using those settings. If again no agent is
found, start a new instance.