Skip to content

Commit 799981d

Browse files
committed
fix: support True/False parse to bool
1 parent 74130f1 commit 799981d

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

examples/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use dotenvy::dotenv;
33

44
#[derive(Debug, EnvConfig)]
55
struct Config {
6-
#[env_config(default = "192.168.2.1")]
6+
#[env_config(name = "ZINC_SERVER_ADDR", default = "192.168.2.1")]
77
server_addr: String,
88
server_mode: bool,
99
#[env_config(name = "ZINC_FOO", default = true)]

templates/builder.j2

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ impl {{ name }} {
77
{% else %}
88
key = "{{ field.attr_name }}";
99
{% endif %}
10-
{% if contains(["usize","i16","i32","i64","u16","u32","u64","f32","f64","String","bool"], field.typ) %}
10+
{% if contains(["usize","i16","i32","i64","u16","u32","u64","f32","f64","bool"], field.typ) %}
1111
let {{ field.name }}: Option<{{ field.typ }}> = match std::env::var(key) {
12-
Ok(val) => match val.parse() {
12+
Ok(val) => match val.to_lowercase().parse() {
1313
Ok(v) => Some(v),
1414
Err(_) => Some("".parse().unwrap()),
1515
},
@@ -21,6 +21,17 @@ impl {{ name }} {
2121
{% endif %}
2222
}
2323
};
24+
{% else if field.typ == "String" %}
25+
let {{ field.name }}: Option<{{ field.typ }}> = match std::env::var(key) {
26+
Ok(val) => Some(val),
27+
Err(err) => {
28+
{% if field.attr_default.is_empty() %}
29+
Some(Default::default())
30+
{% else %}
31+
Some("{{ field.attr_default }}".parse().unwrap())
32+
{% endif %}
33+
}
34+
};
2435
{% else %}
2536
let {{ field.name }}: Option<{{ field.typ }}> = match {{ field.typ }}::init() {
2637
Ok(v) => Some(v),

0 commit comments

Comments
 (0)