in client/commands/infer.py [0:0]
def _run_infer_command_get_output(command: Sequence[str]) -> str:
with backend_arguments.backend_log_file(prefix="pyre_infer") as log_file:
with start.background_logging(Path(log_file.name)):
result = subprocess.run(
command,
stdout=subprocess.PIPE,
stderr=log_file.file,
universal_newlines=True,
)
return_code = result.returncode
# Interpretation of the return code needs to be kept in sync with
# `source/command/inferCommand.ml`.
if return_code == 0:
return result.stdout
elif return_code == 1:
raise commands.ClientException(
message="Pyre encountered an internal failure",
exit_code=commands.ExitCode.FAILURE,
)
elif return_code == 2:
raise commands.ClientException(
message="Pyre encountered a failure within buck.",
exit_code=commands.ExitCode.BUCK_INTERNAL_ERROR,
)
elif return_code == 3:
raise commands.ClientException(
message="Pyre encountered an error when building the buck targets.",
exit_code=commands.ExitCode.BUCK_USER_ERROR,
)
else:
raise commands.ClientException(
message=(
"Infer command exited with unexpected return code: "
f"{return_code}."
),
exit_code=commands.ExitCode.FAILURE,
)