Skip to content

Commit 2dc9272

Browse files
committed
\#61 Address review comments
1 parent b6357f9 commit 2dc9272

6 files changed

Lines changed: 26 additions & 15 deletions

File tree

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
target/
22
Cargo.lock
3-
.idea
4-
wip

dotenv_codegen/tests/ui/dotenv_no_args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ extern crate dotenv_codegen;
33

44
pub fn main() {
55
dotenv!();
6-
}
6+
}

dotenv_codegen/tests/ui/dotenv_or_default_no_args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ extern crate dotenv_codegen;
33

44
pub fn main() {
55
dotenv_or_default!();
6-
}
6+
}

dotenv_codegen/tests/ui/dotenv_or_default_three_args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ extern crate dotenv_codegen;
33

44
pub fn main() {
55
dotenv_or_default!("a", "b", "c");
6-
}
6+
}

dotenv_codegen/tests/ui/dotenv_three_args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ extern crate dotenv_codegen;
33

44
pub fn main() {
55
dotenv!("a", "b", "c");
6-
}
6+
}

dotenv_codegen_implementation/src/lib.rs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ use syn::Token;
1212
#[proc_macro_hack]
1313
pub fn dotenv(input: TokenStream) -> TokenStream {
1414
if let Err(err) = dotenv::dotenv() {
15-
panic!("Error loading .env file: {}", err);
15+
let err_msg = format!("Error loading .env file: {}", err);
16+
return quote! {
17+
compile_error!(#err_msg);
18+
}
19+
.into();
1620
}
1721

1822
// Either everything was fine, or we didn't find an .env file (which we ignore)
@@ -32,19 +36,28 @@ pub fn dotenv(input: TokenStream) -> TokenStream {
3236
#[proc_macro_hack]
3337
pub fn dotenv_or_default(input: TokenStream) -> TokenStream {
3438
if let Err(err) = dotenv::dotenv() {
35-
panic!("Error loading .env file: {}", err);
39+
let err_msg = format!("Error loading .env file: {}", err);
40+
return quote! {
41+
compile_error!(#err_msg);
42+
}
43+
.into();
3644
}
3745

3846
// Either everything was fine, or we didn't find an .env file (which we ignore)
3947
let (var_name, second_value) = expand_env(input);
40-
let default_val = match second_value {
41-
Some(default) => default,
42-
None => panic!("Missing default value for: {}", var_name),
43-
};
4448

45-
match env::var(var_name) {
46-
Ok(val) => quote!(#val).into(),
47-
Err(VarError::NotPresent) | Err(VarError::NotUnicode(_)) => quote!(#default_val).into(),
49+
match second_value {
50+
Some(default) => match env::var(var_name) {
51+
Ok(val) => quote!(#val).into(),
52+
Err(VarError::NotPresent) | Err(VarError::NotUnicode(_)) => quote!(#default).into(),
53+
},
54+
None => {
55+
let err_msg = format!("Missing default value for: {}", var_name);
56+
(quote! {
57+
compile_error!(#err_msg)
58+
})
59+
.into()
60+
}
4861
}
4962
}
5063

0 commit comments

Comments
 (0)