ironic 0.2.8

A batteries-included, type-safe application framework for Rust
Documentation
use std::process::Command;

use crate::{CliError, cli::CargoArgs};

pub(crate) fn execute(subcommand: &str, arguments: CargoArgs) -> Result<(), CliError> {
    let status = Command::new("cargo")
        .arg(subcommand)
        .args(arguments.cargo_args)
        .status()
        .map_err(|error| CliError::io("execute", "cargo", error))?;
    if status.success() {
        Ok(())
    } else {
        Err(CliError::CommandFailed {
            program: format!("cargo {subcommand}"),
            status: status.to_string(),
        })
    }
}