apipe

Crates.ioapipe
lib.rsapipe
version0.2.0
sourcesrc
created_at2022-08-21 14:57:16.794183
updated_at2022-08-29 16:39:09.057792
descriptionAn anonymous UNIX pipe type.
homepage
repositoryhttps://github.com/FinalSh4re/apipe-rs
max_upload_size
id649816
size25,836
Andre Hoffmann (FinalSh4re)

documentation

README

apipe

A simple anonymous UNIX pipe type.

Usage

try_from(&str)

The probably easiest way to create a pipe is by parsing a command string:

use apipe::CommandPipe;

let mut pipe = CommandPipe::try_from(r#"echo "This is a test." | grep -Eo \w\w\sa[^.]*"#)?;
let output = pipe.spawn_with_output()?;
    
assert_eq!(output.stdout(), "is a test\n".as_bytes());

This requires the parser feature to be enabled.

Pipe Command Objects

Create the individual Commands and then contruct a pipe from them:

use apipe::Command;

let mut pipe = Command::parse_str(r#"echo "This is a test.""#)?
             | Command::parse_str(r#"grep -Eo \w\w\sa[^.]*"#)?;

// or:

let mut pipe = Command::new("echo").arg("This is a test.")
             | Command::new("grep").args(&["-Eo", r"\w\w\sa[^.]*"]);
                 
let output = pipe.spawn_with_output()?;
    
assert_eq!(output.stdout(), "is a test\n".as_bytes());

Commands can also be constructed manually if you want:

let mut command = Command::new("ls").arg("-la");

Builder

There is also a conventional builder syntax:

use apipe::CommandPipe;

let output = apipe::CommandPipe::new()
    .add_command("echo")
    .arg("This is a test.")
    .add_command("grep")
    .args(&["-Eo", r"\w\w\sa[^.]*"])
    .spawn_with_output()?;

assert_eq!(output.stdout(), "is a test\n".as_bytes());
Commit count: 45

cargo fmt