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