import argparse
import subprocess
import pathlib
import sys
import tempfile
from rustc_wrapper import (ConvertPathsToAbsolute, LoadRustEnvAndFlags)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--cpp-api-from-rust-exe-path',
required=True,
type=pathlib.Path)
parser.add_argument('--rustc-env-and-flags', type=pathlib.Path, required=True)
parser.add_argument('args', metavar='ARG', nargs='+')
args = parser.parse_args()
(rustenv, rustflags) = LoadRustEnvAndFlags(args.rustc_env_and_flags)
ConvertPathsToAbsolute(rustenv)
rustflags = [*args.args, "--", *rustflags]
assert not [x for x in rustflags if x.startswith("--emit")]
assert not [x for x in rustflags if x.startswith("-o")]
assert not [x for x in rustflags if x.startswith("--out-dir")]
temp_dir = tempfile.TemporaryDirectory()
rustflags += ["--out-dir", temp_dir.name]
r = subprocess.run([args.cpp_api_from_rust_exe_path, *rustflags],
env=rustenv,
check=False)
return r.returncode
if __name__ == '__main__':
sys.exit(main())