podman-api 0.8.0

Rust interface to Podman
Documentation
use futures_util::StreamExt;
use podman_api::{opts, Podman};

#[tokio::main]
async fn main() {
    env_logger::init();
    let podman = Podman::unix("/run/user/1000/podman/podman.sock");

    //if !podman
    //.containers()
    //.get("test-attach")
    //.exists()
    //.await
    //.unwrap()
    //{
    //let opts = opts::ContainerCreateOpts::builder()
    //.image("busybox")
    //.name("test-attach")
    //.build();
    //podman.containers().create(&opts).await.unwrap();
    //}

    let container = podman.containers().get("test-attach");
    let tty_multiplexer = container
        .attach(
            &opts::ContainerAttachOpts::builder()
                .stdout(true)
                .stderr(true)
                .build(),
        )
        .await
        .unwrap();
    let (mut reader, _writer) = tty_multiplexer.split();

    log::info!("awaiting read result");
    while let Some(tty_result) = reader.next().await {
        match tty_result {
            Ok(podman_api::conn::TtyChunk::StdOut(chunk)) if chunk.len() != 0 => {
                log::warn!("got '{}'", String::from_utf8_lossy(&chunk))
            }
            Err(e) => log::error!("Error: {}", e),
            _ => continue,
        }
    }
}