teepee 0.0.1

Wrap your command in a teepee and capture its output while also piping it to the parent process `stdout` and `stderr`
Documentation
use std::process::Command;
use teepee::Teepee;

fn main() {
    let mut command = Command::new("ls");
    command.arg("-l").arg("-a");

    let mut teepee_cmd = Teepee::new(command);
    eprintln!("\nCommand running ...\n");
    match teepee_cmd.output() {
        Ok(output) => {
            eprintln!("\nCommand executed successfully.\n");
            let stdout = String::from_utf8_lossy(&output.stdout);
            let stderr = String::from_utf8_lossy(&output.stderr);
            eprintln!(
                "Captured stdout (lines: {}):\n> {}",
                stdout.lines().count(),
                stdout.lines().collect::<Vec<&str>>().join("\n> ")
            );
            eprintln!(
                "Captured stderr (lines: {}):\n{}",
                stderr.lines().count(),
                stderr
            );
        }
        Err(e) => {
            eprintln!("Error executing command: {}", e);
        }
    }
}