run_script

crates.io Build Status Build status codecov
license Libraries.io for GitHub Documentation downloads
Built with cargo-make

Run shell scripts in rust.

Overview

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.

Usage

Simply include the library and invoke the run function with the script text and run options:

```rust extern crate run_script;

use run_script::ScriptOptions;

fn main() { let mut 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.captureoutput = true; // True to capture and return the output. False will print it to the parent process output. options.exitonerror = false; // Adds set -e option (not available for windows) options.printcommands = 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.

```rust

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

} ```

Installation

In order to use this library, just add it as a dependency:

ini [dependencies] run_script = "*"

API Documentation

See full docs at: API Docs

Contributing

See contributing guide

Release History

| Date | Version | Description | | ----------- | ------- | ----------- | | 2019-07-06 | v0.3.2 | 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. |

License

Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.