[][src]Crate run_script

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

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());
}

Macro Examples

#[macro_use]
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();
}

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.

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.

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