5 unstable releases

0.2.1 Nov 29, 2022
0.2.0 Apr 2, 2020
0.1.1 Jun 4, 2019
0.1.0 May 28, 2019
0.0.1 May 14, 2019

#95 in Template engine

Download history 678/week @ 2023-11-26 332/week @ 2023-12-03 288/week @ 2023-12-10 294/week @ 2023-12-17 167/week @ 2023-12-24 255/week @ 2023-12-31 344/week @ 2024-01-07 272/week @ 2024-01-14 387/week @ 2024-01-21 530/week @ 2024-01-28 269/week @ 2024-02-04 187/week @ 2024-02-11 315/week @ 2024-02-18 605/week @ 2024-02-25 633/week @ 2024-03-03 211/week @ 2024-03-10

1,772 downloads per month
Used in 6 crates

MIT/Apache

8KB
106 lines

envsubst

crates.io Documentation

A simple Rust library for variables substitution.

This library provide helper functions for string manipulation, taking values from a context environment map and substituting all matching placeholders.

Its name and logic is similar to the envsubst GNU utility, but this only supports braces-delimited variables (i.e. ${foo}) and takes replacement values from an explicit map of variables.

License

Licensed under either of

at your option.


lib.rs:

Variables substitution in string templates.

This library provide helper functions for string manipulation, taking values from a context environment map and substituting all matching placeholders.

Its name and logic is similar to the envsubst GNU utility, but this only supports braces-delimited variables (i.e. ${foo}) and takes replacement values from an explicit map of variables.

Example

let base_url = "${protocol}://${hostname}/${endpoint}";
assert!(envsubst::is_templated(base_url));

let mut context = std::collections::HashMap::new();
context.insert("protocol".to_string(), "https".to_string());
context.insert("hostname".to_string(), "example.com".to_string());
context.insert("endpoint".to_string(), "login".to_string());
assert!(envsubst::validate_vars(&context).is_ok());

let final_url = envsubst::substitute(base_url, &context).unwrap();
assert!(!envsubst::is_templated(&final_url));
assert_eq!(final_url, "https://example.com/login");

Dependencies

~0.4–0.8MB
~20K SLoC