Crate process

Source
Expand description

§⚙️ process-lib

Cross-platform, asynchronous Rust library to run commands in pipelines.

§Features

This library can be seen as a convenient async wrapper around std::process::Command:

  • Wraps commands by default with sh -c or cmd /C
  • Supports pipeline (previous command output sent as input for the next command)
  • Exposes convenient functions to export output (as string lossy for example)
  • Supports tokio and async-std async runtimes
  • Supports serde (de)serialization

The library comes with 3 cargo features, including 1 default one:

  • tokio: enables the tokio async runtime
  • async-std: enables the async-std async runtime
  • derive: enables serde support

§Example

use process::{Command, Pipeline};

#[tokio::main]
async fn main() {
    // run a single command	
    let cmd = Command::new("echo hello, world!");
    let out = cmd.run().await.unwrap().to_string_lossy();
    assert_eq!(out, "hello, world!\n");
	
    // run a pipeline
    let cmd = Pipeline::new(["echo hello", "cat"]);
    let out = cmd.run().await.unwrap().to_string_lossy();
    assert_eq!(out, "hello\n");
}

See the full API documentation on docs.rs.

§Sponsoring

nlnet

Special thanks to the NLnet foundation and the European Commission that helped the project to receive financial support from various programs:

If you appreciate the project, feel free to donate using one of the following providers:

GitHub Ko-fi Buy Me a Coffee Liberapay thanks.dev PayPal

Structs§

Command
The command structure.
Output
Wrapper around command output.
Pipeline
The command pipeline structure.

Enums§

Error
The global Error enum of the library.

Type Aliases§

Result
The global Result alias of the library.