use xshell::Shell;
use crate::environment::{cargo_cmd, CmdExt, ProgressGuard};
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)?;
let _progress = ProgressGuard::new();
rbmt_eprintln!("Running cargo command with {:?} deps and {:?} toolchain", lockfile, toolchain);
cargo_cmd(sh).args(cargo_args).run_with_capture()?;
Ok(())
}