oconnor663 / duct.rs

a Rust library for running child processes
MIT License
795 stars 34 forks source link

Implement to_string_lossy() #115

Open paulc opened 5 months ago

paulc commented 5 months ago

Hello,

The attached pull request implements to_string_lossy() for Expression to provide a shell command string equivalent for the cmd pipeline (where possible). This should mostly address Issue #79 and Issue #89 and I've gone with the to_string_lossy() method name suggested in Issue #89 rather than impl Display as I think that this is clearer that this is a lossy conversion. That being said the implementation does its best to capture relatively complex cmd pipelines correctly (including multiple levels of pipe, i/o redirections, manipulating env variables and directory changes - see the embedded docs for examples).

As this relies heavily on UNIX shell syntax it is only enabled for #[cfg(unix)]