#!/bin/sh set -ex retry_until_ok () { sleeptime=0 while ! "$@"; do case $sleeptime in ??.*) echo >&2 "$0: GPG AGENT STARTP $@ TIMED OUT" exit 127 ;; esac sleep $sleeptime sleeptime=$(echo "($sleeptime + 0.001) * 2" | bc -l) done } echo >&2 'GPG-WITHAGENT...' agent_is_running () { gpg-connect-agent --no-autostart &1 \ | grep dgit-gpg-agent-ok >&2 } $DGIT_STUNT_AGENT --daemon &2 retry_until_ok agent_is_running echo >&2 'GPG-WITHAGENT... RUNNING' set +e $DGIT_TEST_REAL_GPG \ --agent-program=$DGIT_STUNT_AGENT "$@" rc=$? set -e echo >&2 'GPG-WITHAGENT... STOPPING' kill_agent_not_running () { LC_MESSAGES=C gpg-connect-agent --no-autostart &1 \ | tee -a /dev/stderr \ | grep 'no gpg-agent running' >&2 } retry_until_ok kill_agent_not_running echo >&2 'GPG-WITHAGENT... DONE' exit $rc