use xshell::Shell;
use crate::lock::LockFile;
use crate::toolchain::{prepare_toolchain, Toolchain};
pub fn run(
sh: &Shell,
lockfile: LockFile,
toolchain: Toolchain,
cargo_args: Vec<String>,
) -> Result<(), Box<dyn std::error::Error>> {
prepare_toolchain(sh, toolchain)?;
let _lockfile_guard = lockfile.activate(sh)?;
rbmt_eprintln!("Running cargo command with {:?} deps and {:?} toolchain", lockfile, toolchain);
let mut cmd = rbmt_cmd!(sh, "cargo --locked");
for arg in cargo_args {
cmd = cmd.arg(arg);
}
cmd.run()?;
Ok(())
}