Expand description
§run_script
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.
§Examples
§Basic Example
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());
}
§Macro Examples
use run_script::ScriptOptions;
fn main() {
// simple call to run script with only the script text
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run script invoked with the script text and options
let options = ScriptOptions::new();
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#,
&options
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// run script invoked with all arguments
let options = ScriptOptions::new();
let (code, output, error) = run_script::run_script!(
r#"
echo "Test"
exit 0
"#,
&vec!["ARG1".to_string(), "ARG2".to_string()],
&options
)
.unwrap();
println!("Exit Code: {}", code);
println!("Output: {}", output);
println!("Error: {}", error);
// spawn_script! works the same as run_script! but returns the child process handle
let child = run_script::spawn_script!(
r#"
echo "Test"
exit 0
"#
)
.unwrap();
println!("PID: {}", child.id());
}
§Installation
In order to use this library, just add it as a dependency:
[dependencies]
run_script = "*"
§Contributing
§License
Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.
Modules§
- types
- types
Macros§
- run_
script - Enables to invoke the run_script::run function more easily without providing all input.
- run_
script_ or_ exit - Enables to invoke the run_script::run_or_exit function more easily without providing all input.
- spawn_
script - Enables to invoke the run_script::spawn function more easily without providing all input.
Functions§
- run
- Invokes the provided script content and returns the invocation output.
- run_
or_ exit - Invokes the provided script content and returns the invocation output. In case of invocation error or error exit code, this function will exit the main process.
- spawn
- Invokes the provided script content and returns a process handle.
Type Aliases§
- IoOptions
- Io Options available for invoking the script
- Script
Error - Error struct
- Script
Options - Options available for invoking the script