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