jocker-lib 0.5.1

Run your monorepo binaries locally with ease !
Documentation
use tokio::{
    io::{AsyncBufReadExt, BufReader},
    process::Child,
};

use crate::error::Result;

#[expect(async_fn_in_trait)]
pub trait CommandLogger {
    async fn log_to_console(&mut self) -> Result<()>;
}

impl CommandLogger for Child {
    async fn log_to_console(&mut self) -> Result<()> {
        if let Some(stdout) = self.stdout.take() {
            tokio::spawn(async {
                let mut stdout_reader = BufReader::new(stdout).lines();
                while let Ok(Some(line)) = stdout_reader.next_line().await {
                    println!("{}", line);
                }
            });
        }
        if let Some(stderr) = self.stderr.take() {
            tokio::spawn(async {
                let mut stderr_reader = BufReader::new(stderr).lines();
                while let Ok(Some(line)) = stderr_reader.next_line().await {
                    println!("{}", line);
                }
            });
        }
        Ok(())
    }
}