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 function with the script text and run options:
externcrate run_script;use run_script::ScriptOptions;fnmain(){letmut options = ScriptOptions::new();
options.runner = None;// The script runner, for example bash. By default for windows it's cmd.exe and for other systems it is sh.
options.capture_output = true;// True to capture and return the output. False will print it to the parent process output.
options.exit_on_error = false;// Adds set -e option (not available for windows)
options.print_commands = false;// Adds set -x option (not available for windows)let args = vec![];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);}The library also provides the run_script! macro for simpler usage.
#[macro_use]externcrate run_script;use run_script::ScriptOptions;fnmain(){// simple call to run script with only the script textlet(code, output, error) = run_script!(r#" echo "Test" exit 0 "#).unwrap();// run script invoked with the script text and optionslet options = ScriptOptions::new();let(code, output, error) = run_script!(r#" echo "Test" exit 0 "#,&options
).unwrap();// run script invoked with all argumentslet options = ScriptOptions::new();let(code, output, error) = run_script!(r#" echo "Test" exit 0 "#,&vec!["ARG1".to_string(),"ARG2".to_string()],&options
).unwrap();}In order to use this library, just add it as a dependency:
[dependencies]run_script = "*"See full docs at: API Docs
| Date | Version | Description |
|---|---|---|
| 2018-11-04 | v0.2.0 | Maintenance |
| 2018-03-20 | v0.1.14 | Fix permissions issue (#2) |
| 2017-12-23 | v0.1.10 | New run_script! macro |
| 2017-11-04 | v0.1.1 | Initial release. |
Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.