command-stream 1.3.0

Modern shell command execution library with streaming, async iteration, and event support
Documentation
use command_stream::{ProcessRunner, RunOptions, StdinOption};

#[tokio::test]
async fn writes_to_a_running_commands_stdin() {
    let mut runner = ProcessRunner::new(
        "cat",
        RunOptions {
            mirror: false,
            stdin: StdinOption::Pipe,
            ..RunOptions::default()
        },
    );

    runner.start().await.unwrap();
    runner.write_stdin("first line\n").await.unwrap();
    runner.write_stdin("second line\n").await.unwrap();
    runner.close_stdin().await.unwrap();

    let result = runner.run().await.unwrap();
    assert_eq!(result.stdout, "first line\nsecond line\n");
    assert_eq!(result.stdin.to_string(), "first line\nsecond line\n");
}