An open API service indexing awesome lists of open source software.

https://github.com/ossystems/easy-process-rs

Allow running external commands and properly handle its success and failures.
https://github.com/ossystems/easy-process-rs

crates parse process rust shell-script

Last synced: 2 months ago
JSON representation

Allow running external commands and properly handle its success and failures.

Awesome Lists containing this project

README

          

[![Coverage Status](https://coveralls.io/repos/github/OSSystems/easy-process-rs/badge.svg?branch=master)](https://coveralls.io/github/OSSystems/easy-process-rs?branch=master)
[![Documentation](https://docs.rs/easy_process/badge.svg)](https://docs.rs/easy_process)

# easy_process

Allow running external commands and properly handle its success
and failures.

| Platform | Build Status |
| -------- | ------------ |
| Linux | [![build status](https://github.com/OSSystems/easy-process-rs/workflows/CI%20(Linux)/badge.svg)](https://github.com/OSSystems/easy-process-rs/actions) |
| macOS | [![build status](https://github.com/OSSystems/easy-process-rs/workflows/CI%20(macOS)/badge.svg)](https://github.com/OSSystems/easy-process-rs/actions) |
| Windows | [![build status](https://github.com/OSSystems/easy-process-rs/workflows/CI%20(Windows)/badge.svg)](https://github.com/OSSystems/easy-process-rs/actions) |

---

This creates provides a `run` function that does inline parsing of
literal command line strings (handling escape codes and splitting
at whitespace) and checks the `ExitStatus` of the command. If it
didn't succeed they will return a `Err(...)` instead of a
`Ok(...)`.

Note that the provided functions do return their own `Output`
struct instead of [`std::process::Output`].

## Example
```rust
use easy_process;

// stdout
let output = easy_process::run(r#"sh -c 'echo "1 2 3 4"'"#)?;
assert_eq!(&output.stdout, "1 2 3 4\n");

// stderr
let output = easy_process::run(r#"sh -c 'echo "1 2 3 4" >&2'"#)?;
assert_eq!(&output.stderr, "1 2 3 4\n");
```

[`std::process::Output`]: https://doc.rust-lang.org/std/process/struct.Output.html

Commands on windows are also supported in the same way:

```rust
let output = easy_process::run(r#"powershell /C 'echo "1 2 3 4"'"#)?;
assert_eq!(&output.stdout, "1 2 3 4\r\n");
```

## License

Licensed under either of

* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the
Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.