#!/usr/bin/env vpython3 # Copyright 2022 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import argparse import os import subprocess import sys # Set up path to load action_helpers.py which enables us to do # atomic output that's maximally compatible with ninja. sys.path.append( os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, os.pardir, os.pardir, os.pardir, 'build')) import action_helpers def run(exe, args, output, is_header): cmdargs = [os.path.abspath(exe)] cmdargs.extend(args) if is_header: cmdargs.extend(["--header"]) job = subprocess.run(cmdargs, stdout=subprocess.PIPE, stderr=subprocess.PIPE) messages = job.stderr.decode('utf-8') if messages.rstrip(): print(messages, file=sys.stderr) if job.returncode != 0: return job.returncode with action_helpers.atomic_output(output) as output: output.write(job.stdout) return 0 def main(): parser = argparse.ArgumentParser("run_cxxbridge.py") parser.add_argument("--exe", help="Path to cxxbridge", required=True), parser.add_argument("--cc", help="output cc file", required=True) parser.add_argument("--header", help="output h file", required=True) parser.add_argument('args', metavar='args', nargs='+', help="Args to pass through") args = parser.parse_args() v = run(args.exe, args.args, args.cc, False) if v != 0: return v return run(args.exe, args.args, args.header, True) if __name__ == '__main__': sys.exit(main())