From b04a28929b82506881fbea53cc4ca7098decdc70 Mon Sep 17 00:00:00 2001 From: Joseph Harrison-Lim Date: Sat, 22 Aug 2020 23:22:31 -0400 Subject: [PATCH] \#61 Address review comments --- .gitignore | 2 -- dotenv_codegen/tests/ui/dotenv_no_args.rs | 2 +- .../tests/ui/dotenv_or_default_no_args.rs | 2 +- .../tests/ui/dotenv_or_default_three_args.rs | 2 +- dotenv_codegen/tests/ui/dotenv_three_args.rs | 2 +- dotenv_codegen_implementation/src/lib.rs | 19 ++++++++++++------- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 615c127..2c96eb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ target/ Cargo.lock -.idea -wip diff --git a/dotenv_codegen/tests/ui/dotenv_no_args.rs b/dotenv_codegen/tests/ui/dotenv_no_args.rs index f5a19c8..4fac807 100644 --- a/dotenv_codegen/tests/ui/dotenv_no_args.rs +++ b/dotenv_codegen/tests/ui/dotenv_no_args.rs @@ -3,4 +3,4 @@ extern crate dotenv_codegen; pub fn main() { dotenv!(); -} \ No newline at end of file +} diff --git a/dotenv_codegen/tests/ui/dotenv_or_default_no_args.rs b/dotenv_codegen/tests/ui/dotenv_or_default_no_args.rs index d0bd840..287c071 100644 --- a/dotenv_codegen/tests/ui/dotenv_or_default_no_args.rs +++ b/dotenv_codegen/tests/ui/dotenv_or_default_no_args.rs @@ -3,4 +3,4 @@ extern crate dotenv_codegen; pub fn main() { dotenv_or_default!(); -} \ No newline at end of file +} diff --git a/dotenv_codegen/tests/ui/dotenv_or_default_three_args.rs b/dotenv_codegen/tests/ui/dotenv_or_default_three_args.rs index ee9307e..05dee0c 100644 --- a/dotenv_codegen/tests/ui/dotenv_or_default_three_args.rs +++ b/dotenv_codegen/tests/ui/dotenv_or_default_three_args.rs @@ -3,4 +3,4 @@ extern crate dotenv_codegen; pub fn main() { dotenv_or_default!("a", "b", "c"); -} \ No newline at end of file +} diff --git a/dotenv_codegen/tests/ui/dotenv_three_args.rs b/dotenv_codegen/tests/ui/dotenv_three_args.rs index 5af2c97..04d584a 100644 --- a/dotenv_codegen/tests/ui/dotenv_three_args.rs +++ b/dotenv_codegen/tests/ui/dotenv_three_args.rs @@ -3,4 +3,4 @@ extern crate dotenv_codegen; pub fn main() { dotenv!("a", "b", "c"); -} \ No newline at end of file +} diff --git a/dotenv_codegen_implementation/src/lib.rs b/dotenv_codegen_implementation/src/lib.rs index fc5f876..aaa0ccb 100644 --- a/dotenv_codegen_implementation/src/lib.rs +++ b/dotenv_codegen_implementation/src/lib.rs @@ -37,14 +37,19 @@ pub fn dotenv_or_default(input: TokenStream) -> TokenStream { // Either everything was fine, or we didn't find an .env file (which we ignore) let (var_name, second_value) = expand_env(input); - let default_val = match second_value { - Some(default) => default, - None => panic!("Missing default value for: {}", var_name), - }; - match env::var(var_name) { - Ok(val) => quote!(#val).into(), - Err(VarError::NotPresent) | Err(VarError::NotUnicode(_)) => quote!(#default_val).into(), + match second_value { + Some(default) => match env::var(var_name) { + Ok(val) => quote!(#val).into(), + Err(VarError::NotPresent) | Err(VarError::NotUnicode(_)) => quote!(#default).into(), + }, + None => { + let err_msg = format!("Missing default value for: {}", var_name); + (quote! { + compile_error!(#err_msg) + }) + .into() + } } }