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: about 1 year ago
JSON representation
Allow running external commands and properly handle its success and failures.
- Host: GitHub
- URL: https://github.com/OSSystems/easy-process-rs
- Owner: OSSystems
- License: apache-2.0
- Created: 2018-05-30T21:00:31.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-08-08T08:46:24.000Z (over 1 year ago)
- Last Synced: 2025-02-01T17:02:26.834Z (about 1 year ago)
- Topics: crates, parse, process, rust, shell-script
- Language: Rust
- Homepage: https://crates.io/crates/easy_process
- Size: 56.6 KB
- Stars: 16
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[](https://coveralls.io/github/OSSystems/easy-process-rs?branch=master)
[](https://docs.rs/easy_process)
# easy_process
Allow running external commands and properly handle its success
and failures.
| Platform | Build Status |
| -------- | ------------ |
| Linux | [/badge.svg)](https://github.com/OSSystems/easy-process-rs/actions) |
| macOS | [/badge.svg)](https://github.com/OSSystems/easy-process-rs/actions) |
| 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.