run_script - Rust
Description: run_script
Keywords: rust, rustlang, rust-lang, run_script

# Crate run_script

source · [−]
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

See contributing guide

## 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 Definitions

IoOptions

Io Options available for invoking the script

ScriptError

Error struct

ScriptOptions

Options available for invoking the script