@@ -2,7 +2,6 @@ package env
22
33import  (
44	"fmt" 
5- 	"log/slog" 
65	"os" 
76	"strconv" 
87	"strings" 
@@ -21,11 +20,12 @@ import (
2120const  Name  =  "env" 
2221
2322func  Set (key , value  string ) result.Error  {
24- 	return  result .ErrOf (os .Setenv (keyHandler (key ), value )).Log (func (e  * zerolog.Event ) {
25- 		e .Str ("key" , key )
26- 		e .Str ("value" , value )
27- 		e .Str (logfields .Msg , "env_set_error" )
28- 	})
23+ 	return  result .ErrOf (os .Setenv (keyHandler (key ), value )).
24+ 		Log (func (e  * zerolog.Event ) {
25+ 			e .Str ("key" , key )
26+ 			e .Str ("value" , value )
27+ 			e .Str (logfields .Msg , "env_set_error" )
28+ 		})
2929}
3030
3131func  MustSet (key , value  string ) { Set (key , value ).Must () }
@@ -38,7 +38,7 @@ func Get(names ...string) string {
3838
3939func  MustGet (names  ... string ) string  {
4040	val  :=  Get (names ... )
41- 	assert .If (val  ==  "" , "env not found , names=%q" , names )
41+ 	assert .If (val  ==  "" , "env value  not set , names=%q" , names )
4242	return  val 
4343}
4444
@@ -70,7 +70,7 @@ func GetBool(names ...string) bool {
7070
7171	v , err  :=  strconv .ParseBool (val )
7272	if  err  !=  nil  {
73- 		slog .Error (fmt . Sprintf ( "env:  failed to parse string to bool,  keys=%q value=%s err=%v "names , val , err ) )
73+ 		getLog () .Error (" failed to parse string to bool" ,  " keys"names , "value" ,  val , " err" ,  err )
7474		return  false 
7575	}
7676
@@ -86,7 +86,7 @@ func GetInt(names ...string) int {
8686
8787	v , err  :=  strconv .Atoi (val )
8888	if  err  !=  nil  {
89- 		slog .Error (fmt . Sprintf ( "env:  failed to parse string to int,  keys=%q value=%s err=%v "names , val , err ) )
89+ 		getLog () .Error (" failed to parse string to int" ,  " keys"names , "value" ,  val , " err" ,  err )
9090		return  - 1 
9191	}
9292
@@ -102,7 +102,7 @@ func GetFloat(names ...string) float64 {
102102
103103	v , err  :=  strconv .ParseFloat (val , 64 )
104104	if  err  !=  nil  {
105- 		slog .Error (fmt . Sprintf ( "env:  failed to parse string to float,  keys=%q value=%s err=%v "names , val , err ) )
105+ 		getLog () .Error (" failed to parse string to float" ,  " keys"names , "value" ,  val , " err" ,  err )
106106		return  - 1 
107107	}
108108
@@ -112,19 +112,21 @@ func GetFloat(names ...string) float64 {
112112func  Lookup (key  string ) (string , bool ) { return  os .LookupEnv (keyHandler (key )) }
113113
114114func  Delete (key  string ) result.Error  {
115- 	return  result .ErrOf (os .Unsetenv (keyHandler (key ))).Log (func (e  * zerolog.Event ) {
116- 		e .Str ("key" , key )
117- 		e .Str (logfields .Msg , "env_delete_error" )
118- 	})
115+ 	return  result .ErrOf (os .Unsetenv (keyHandler (key ))).
116+ 		Log (func (e  * zerolog.Event ) {
117+ 			e .Str ("key" , key )
118+ 			e .Str (logfields .Msg , "env_delete_error" )
119+ 		})
119120}
120121
121122func  MustDelete (key  string ) { Delete (key ).Must () }
122123
123124func  Expand (value  string ) result.Result [string ] {
124- 	return  result .Wrap (envsubst .String (value )).Log (func (e  * zerolog.Event ) {
125- 		e .Str ("value" , value )
126- 		e .Str (logfields .Msg , "env_expand_error" )
127- 	})
125+ 	return  result .Wrap (envsubst .String (value )).
126+ 		Log (func (e  * zerolog.Event ) {
127+ 			e .Str ("value" , value )
128+ 			e .Str (logfields .Msg , "env_expand_error" )
129+ 		})
128130}
129131
130132func  Map () map [string ]string  {
@@ -150,13 +152,22 @@ func LoadFiles(files ...string) (r result.Error) {
150152		return 
151153	}
152154
155+ 	var  needReloadEnv  bool 
153156	for  _ , file  :=  range  files  {
154- 		data  :=  result .Wrap (os .ReadFile (file )).Unwrap (& r )
157+ 		data  :=  result .Wrap (os .ReadFile (file )).
158+ 			Log (func (e  * zerolog.Event ) {
159+ 				e .Str (logfields .Msg , fmt .Sprintf ("failed to read file:%s" , file ))
160+ 			}).
161+ 			Unwrap (& r )
155162		if  r .IsErr () {
156163			return 
157164		}
158165
159- 		dataMap  :=  result .Wrap (godotenv .UnmarshalBytes (data )).Unwrap (& r )
166+ 		dataMap  :=  result .Wrap (godotenv .UnmarshalBytes (data )).
167+ 			Log (func (e  * zerolog.Event ) {
168+ 				e .Str (logfields .Msg , fmt .Sprintf ("failed to parse env file:%s" , file ))
169+ 			}).
170+ 			Unwrap (& r )
160171		if  r .IsErr () {
161172			return 
162173		}
@@ -169,10 +180,15 @@ func LoadFiles(files ...string) (r result.Error) {
169180			if  Set (k , v ).Catch (& r ) {
170181				return 
171182			}
183+ 
184+ 			needReloadEnv  =  true 
172185		}
173186	}
174187
175- 	loadEnv ()
188+ 	if  needReloadEnv  {
189+ 		loadEnv ()
190+ 	}
191+ 
176192	return 
177193}
178194
0 commit comments