12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/usr/bin/env python3
- # Copyright 2020 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.
- """
- Wrapper around xcrun adding support for --developer-dir parameter to set
- the DEVELOPER_DIR environment variable, and for converting paths relative
- to absolute (since this is required by most of the tool run via xcrun).
- """
- import argparse
- import os
- import subprocess
- import sys
- def xcrun(command, developer_dir):
- environ = dict(os.environ)
- if developer_dir:
- environ['DEVELOPER_DIR'] = os.path.abspath(developer_dir)
- processed_args = ['/usr/bin/xcrun']
- for arg in command:
- if os.path.exists(arg):
- arg = os.path.abspath(arg)
- processed_args.append(arg)
- process = subprocess.Popen(processed_args,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- universal_newlines=True,
- env=environ)
- stdout, stderr = process.communicate()
- sys.stdout.write(stdout)
- if process.returncode:
- sys.stderr.write(stderr)
- sys.exit(process.returncode)
- def main(args):
- parser = argparse.ArgumentParser(add_help=False)
- parser.add_argument(
- '--developer-dir',
- help='path to developer dir to use for the invocation of xcrun')
- parsed, remaining_args = parser.parse_known_args(args)
- xcrun(remaining_args, parsed.developer_dir)
- if __name__ == '__main__':
- main(sys.argv[1:])
|