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