use std::path::PathBuf;
use std::process::Command;
use anyhow::{Context, bail};
use crate::config::RUSTUP_TOOLCHAIN_ENV;
pub fn sysroot(rustc: &str, toolchain: Option<&str>) -> anyhow::Result<PathBuf> {
let mut command = Command::new(rustc);
if let Some(toolchain) = toolchain {
command.env(RUSTUP_TOOLCHAIN_ENV, toolchain);
}
let output = command
.arg("--print")
.arg("sysroot")
.output()
.with_context(|| format!("failed to run `{rustc} --print sysroot`"))?;
if !output.status.success() {
bail!(
"`{rustc} --print sysroot` failed with status {}",
output.status
);
}
let path = String::from_utf8(output.stdout)
.context("`rustc --print sysroot` produced non-UTF-8 output")?;
Ok(PathBuf::from(path.trim()))
}