@@ -12,7 +12,11 @@ use syn::Token;
1212#[ proc_macro_hack]
1313pub 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]
3337pub 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