| #!/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) |