#!/usr/bin/env bash
set -euo pipefail

: "${CI_SPIFFE_ID:?CI_SPIFFE_ID is required}"
: "${SPIFFE_ENDPOINT_SOCKET:?SPIFFE_ENDPOINT_SOCKET is required}"

socket_path=${SPIFFE_ENDPOINT_SOCKET#unix://}
deadline=$((SECONDS + 120))
while (( SECONDS < deadline )); do
  if /opt/spire/bin/spire-agent api fetch x509 \
    -socketPath "$socket_path" \
    -output json 2>/dev/null | \
    jq -e --arg id "$CI_SPIFFE_ID" \
      'any(.svids[]?; .spiffe_id == $id)' >/dev/null; then
    exec /usr/local/bin/run.sh
  fi
  sleep 1
done

printf 'timed out waiting for OpenSandbox SPIFFE identity %s\n' "$CI_SPIFFE_ID" >&2
exit 1
