rust workflow

Introduction

This library performs batch-like expansions in strings, that is, to expand %VAR% into their values inside some context. It's like a Windows version of shellexpand.

Aside from context variables, it can also expands number arguments (e.g %1, %*) syntax with a list of arguments provided by user.

Unlike shellexpand, variables that do not exist will expand to empty string.

Usage

See example below on how to define a context. The library also provids a default cmdexpand::env_context which can expand environment variable. ```rust use cmdexpand::Expander;

fn mycontext(s: &str) -> Option { match s { "NAME" => Some(String::from("Alice")), "HOBBY" => Some(String::from("coding")), _ => None, } }

asserteq!(Expander::new(r#"echo "%NAME%'s hobby is %HOBBY%""#) .addcontext(&mycontext) .expand() .unwrap(), r#"echo "Alice's hobby is coding""#); ```

You can provide a list of arguments too. ```rust use cmdexpand::Expander;

asserteq!(Expander::new("del %*") .addargs(&["a.txt", "b.txt"]) .expand() .unwrap(), "del a.txt b.txt"); ```