#!/usr/bin/env bash
set -euo pipefail
REAL_GIT=/usr/bin/git
if [[ "${RAKAZO_GITHUB_BROKER_URL:-}" == "" || "${RAKAZO_GITHUB_BROKER_RUN_TOKEN:-}" == "" ]]; then
  exec "$REAL_GIT" "$@"
fi
sub="${1:-}"
case "$sub" in
  push|fetch|pull|clone|ls-remote)
    payload="$(python3 -c 'import json,os,sys; print(json.dumps({"argv":["git"]+sys.argv[1:],"cwd":os.getcwd()}))' -- "$@")"
    response="$(curl -fsS -X POST "${RAKAZO_GITHUB_BROKER_URL}/v1/git" \
      -H "Authorization: Bearer ${RAKAZO_GITHUB_BROKER_RUN_TOKEN}" \
      -H "Content-Type: application/json" \
      --data-binary "$payload")" || {
      echo "GitHub access through evOo failed (${RAKAZO_GITHUB_BROKER_URL})." >&2
      exit 1
    }
    code="$(python3 -c 'import json,sys; print(json.load(sys.stdin).get("code",1))' <<<"$response")"
    python3 -c 'import json,sys; b=json.load(sys.stdin); sys.stdout.write(b.get("stdout") or ""); sys.stderr.write(b.get("stderr") or "")' <<<"$response"
    exit "$code"
    ;;
esac
exec "$REAL_GIT" "$@"
