|  | #!/usr/bin/env python3 | 
|  |  | 
|  | # Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | # Runs rust tools, overriding the PATH variable so they can locate each other. | 
|  |  | 
|  | import os | 
|  | import subprocess | 
|  | import sys | 
|  | import time | 
|  |  | 
|  | def run(cmd): | 
|  | bindir = os.path.dirname(cmd[0]); | 
|  | env = os.environ | 
|  | if 'PATH' in env: | 
|  | env['PATH'] += os.pathsep + bindir | 
|  | else: | 
|  | env['PATH'] = bindir | 
|  | out = '' | 
|  | err = '' | 
|  | proc = subprocess.Popen( | 
|  | cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 
|  | while proc.returncode is None: | 
|  | time.sleep(1) | 
|  | stdout, stderr = proc.communicate() | 
|  | out += stdout | 
|  | err += stderr | 
|  | proc.poll() | 
|  | if proc.returncode == 0: | 
|  | return 0 | 
|  | print(out) | 
|  | print(err) | 
|  | return proc.returncode | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(run(sys.argv[1:])) |