| #!/usr/bin/env python | |
| # Copyright 2014 The Chromium Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| # Modified from go/env.py in Chromium infrastructure's repository to patch out | |
| # everything but the core toolchain. | |
| # | |
| # https://chromium.googlesource.com/infra/infra/ | |
| """Can be used to point environment variable to hermetic Go toolset. | |
| Usage (on linux and mac): | |
| $ eval `./env.py` | |
| $ go version | |
| Or it can be used to wrap a command: | |
| $ ./env.py go version | |
| """ | |
| assert __name__ == '__main__' | |
| import imp | |
| import os | |
| import subprocess | |
| import sys | |
| # Do not want to mess with sys.path, load the module directly. | |
| bootstrap = imp.load_source( | |
| 'bootstrap', os.path.join(os.path.dirname(__file__), 'bootstrap.py')) | |
| old = os.environ.copy() | |
| new = bootstrap.prepare_go_environ() | |
| if len(sys.argv) == 1: | |
| for key, value in sorted(new.iteritems()): | |
| if old.get(key) != value: | |
| print 'export %s="%s"' % (key, value) | |
| else: | |
| exe = sys.argv[1] | |
| if exe == 'python': | |
| exe = sys.executable | |
| else: | |
| # Help Windows to find the executable in new PATH, do it only when | |
| # executable is referenced by name (and not by path). | |
| if os.sep not in exe: | |
| exe = bootstrap.find_executable(exe, [bootstrap.WORKSPACE]) | |
| sys.exit(subprocess.call([exe] + sys.argv[2:], env=new)) |