import argparse
import subprocess
import pathlib
import sys
import tempfile
from rustc_wrapper import (ConvertPathsToAbsolute, LoadRustEnvAndFlags,
RecommendApplyFixesScript)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--clippy-driver', required=True, type=pathlib.Path)
parser.add_argument('--rustc-env-and-flags', type=pathlib.Path, required=True)
parser.add_argument('--build-stamp-file', type=pathlib.Path, required=True)
args = parser.parse_args()
(rustenv, rustflags) = LoadRustEnvAndFlags(args.rustc_env_and_flags)
ConvertPathsToAbsolute(rustenv)
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]
rustflags += ["--emit=metadata"]
r = subprocess.run([args.clippy_driver, *rustflags], env=rustenv, check=False)
if r.returncode == 0:
args.build_stamp_file.touch()
else:
print("NOTE: See `//docs/rust/clippy.md` for more Clippy info.",
file=sys.stderr)
RecommendApplyFixesScript(args.clippy_driver, args.rustc_env_and_flags)
return r.returncode
if __name__ == '__main__':
sys.exit(main())