Run shell scripts in rust.
This library enables to invoke shell scripts based on their content.
While std::process::Command works great to execute standalone command, you need more manual code to take a script text and execute it.
For this purpose, this library was created.
Simply include the library and invoke the run/spawn function with the script text and run options:
```rust extern crate run_script;
use run_script::ScriptOptions;
fn main() { let options = ScriptOptions::new();
let args = vec![];
// run the script and get the script execution output
let (code, output, error) = run_script::run(
r#"
echo "Directory Info:"
dir
"#,
&args,
&options
).unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run the script and get a handle to the running child process
let child = run_script::spawn(
r#"
echo "Directory Info:"
dir
"#,
&args,
&options
).unwrap();
let spawn_output = child.wait_with_output().unwrap();
println!("Success: {}", &spawn_output.status.success());
} ```
The library also provides the run_script!
and spawn_script!
macros for simpler usage.
```rust
extern crate run_script;
use run_script::ScriptOptions;
fn main() { // simple call to run script with only the script text let (code, output, error) = run_script!( r#" echo "Test" exit 0 "# ).unwrap();
// run script invoked with the script text and options
let options = ScriptOptions::new();
let (code, output, error) = run_script!(
r#"
echo "Test"
exit 0
"#,
&options
).unwrap();
// run script invoked with all arguments
let options = ScriptOptions::new();
let (code, output, error) = run_script!(
r#"
echo "Test"
exit 0
"#,
&vec!["ARG1".to_string(), "ARG2".to_string()],
&options
).unwrap();
// spawn_script! works the same as run_script! but returns the child process handle
let child = spawn_script!(
r#"
echo "Test"
exit 0
"#
).unwrap();
} ```
In order to use this library, just add it as a dependency:
ini
[dependencies]
run_script = "*"
See full docs at: API Docs
| Date | Version | Description | | ----------- | ------- | ----------- | | 2019-12-24 | v0.4.0 | New spawn function and spawnscript! macro #7 | | 2018-03-20 | v0.1.14 | Fix permissions issue (#2) | | 2017-12-23 | v0.1.10 | New runscript! macro | | 2017-11-04 | v0.1.1 | Initial release. |
Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.