blob: 579d3357e13d61343035ab572bf0e98b47d324a4 [file] [log] [blame]
#!/usr/bin/env python3
# This is a helper script to debug Docker authorization issues.
#
# This script passes its stdin and command-line arguments to the docker-credential-gcloud program,
# captures its stdout, stderr and exit code, logs them in a file for debugging purposes, emits the
# captured stdout and stderr, and exits with the captured exit code.
#
# See usage instructions in README.md.
import datetime
import os
import subprocess
import sys
stdin = "\n".join(sys.stdin.readlines())
p = subprocess.run(["/usr/lib/google-cloud-sdk/bin/docker-credential-gcloud"] + sys.argv[1:], capture_output=True, text=True, input=stdin)
with open("/docker-credential-gcloud-proxy.log", "a") as f:
f.write("===\n")
f.write("time: %s\n" % str(datetime.datetime.now()))
f.write("working directory: %s\n" % os.getcwd())
f.write("environment variables:\n---\n%s\n---\n" % "\n".join(["%s=%s" % (v, os.environ[v]) for v in os.environ]))
f.write("command: %s\n" % " ".join(sys.argv))
f.write("exit code: %d\n" % p.returncode)
f.write("stdin:\n---\n%s---\n" % stdin)
f.write("stdout:\n---\n%s---\n" % p.stdout)
f.write("stderr:\n---\n%s---\n" % p.stderr)
sys.stdout.write(p.stdout)
sys.stderr.write(p.stderr)
sys.exit(p.returncode)