cargo-q 0.1.1

A cargo subcommand for running multiple cargo commands in a time
use std::io;
use std::process::{Command, Stdio};

#[derive(Debug)]
pub(crate) struct Routine {
    pub(crate) name: String,
    pub(crate) args: Vec<String>,
}

impl Routine {
    pub fn run(&self, verbose: bool) -> io::Result<bool> {
        let stdout = if verbose {
            Stdio::inherit()
        } else {
            Stdio::null()
        };

        let stderr = if verbose {
            Stdio::inherit()
        } else {
            Stdio::null()
        };

        let status = Command::new("cargo")
            .arg(&self.name)
            .args(&self.args)
            .stdout(stdout)
            .stderr(stderr)
            .status()?;

        Ok(status.success())
    }
}