@@ -28,25 +28,26 @@ func Set(key, value string) result.Error {
2828
2929func MustSet (key , value string ) { Set (key , value ).Must () }
3030
31- func GetDefault (name string , defaultVal string ) string {
32- val := Get (name )
33- return lo .If (val != "" , val ).Else (defaultVal )
34- }
35-
3631func Get (names ... string ) string {
3732 var val string
38- GetVal (& val , names ... )
33+ getVal (& val , names ... )
3934 return val
4035}
4136
4237func MustGet (names ... string ) string {
43- var val string
44- GetVal (& val , names ... )
38+ val := Get (names ... )
4539 assert .If (val == "" , "env not found, names=%q" , names )
4640 return val
4741}
4842
49- func GetVal (val * string , names ... string ) {
43+ func GetOr (name string , defaultVal string ) string {
44+ val := Get (name )
45+ return lo .If (val != "" , val ).Else (defaultVal )
46+ }
47+
48+ func GetWith (val * string , names ... string ) { getVal (val , names ... ) }
49+
50+ func getVal (val * string , names ... string ) {
5051 for _ , name := range names {
5152 env , ok := Lookup (name )
5253 env = trim (env )
@@ -57,49 +58,52 @@ func GetVal(val *string, names ...string) {
5758 }
5859}
5960
60- func GetBoolVal (val * bool , names ... string ) {
61- dt := Get (names ... )
62- if dt == "" {
63- return
61+ func GetBool (names ... string ) bool {
62+ var val string
63+ getVal (& val , names ... )
64+ if val == "" {
65+ return false
6466 }
6567
66- v , err := strconv .ParseBool (dt )
68+ v , err := strconv .ParseBool (val )
6769 if err != nil {
68- slog .Error (fmt .Sprintf ("env: failed to parse string to bool, keys=%q value=%s err=%v" , names , dt , err ))
69- return
70+ slog .Error (fmt .Sprintf ("env: failed to parse string to bool, keys=%q value=%s err=%v" , names , val , err ))
71+ return false
7072 }
7173
72- * val = v
74+ return v
7375}
7476
75- func GetIntVal (val * int , names ... string ) {
76- dt := Get (names ... )
77- if dt == "" {
78- return
77+ func GetInt (names ... string ) int {
78+ var val string
79+ getVal (& val , names ... )
80+ if val == "" {
81+ return - 1
7982 }
8083
81- v , err := strconv .Atoi (dt )
84+ v , err := strconv .Atoi (val )
8285 if err != nil {
83- slog .Error (fmt .Sprintf ("env: failed to parse string to int, keys=%q value=%s err=%v" , names , dt , err ))
84- return
86+ slog .Error (fmt .Sprintf ("env: failed to parse string to int, keys=%q value=%s err=%v" , names , val , err ))
87+ return - 1
8588 }
8689
87- * val = v
90+ return v
8891}
8992
90- func GetFloatVal (val * float64 , names ... string ) {
91- dt := Get (names ... )
92- if dt == "" {
93- return
93+ func GetFloat (names ... string ) float64 {
94+ var val string
95+ getVal (& val , names ... )
96+ if val == "" {
97+ return - 1
9498 }
9599
96- v , err := strconv .ParseFloat (dt , 64 )
100+ v , err := strconv .ParseFloat (val , 64 )
97101 if err != nil {
98- slog .Error (fmt .Sprintf ("env: failed to parse string to float, keys=%q value=%s err=%v" , names , dt , err ))
99- return
102+ slog .Error (fmt .Sprintf ("env: failed to parse string to float, keys=%q value=%s err=%v" , names , val , err ))
103+ return - 1
100104 }
101105
102- * val = v
106+ return v
103107}
104108
105109func Lookup (key string ) (string , bool ) { return os .LookupEnv (keyHandler (key )) }
@@ -111,6 +115,8 @@ func Delete(key string) result.Error {
111115 })
112116}
113117
118+ func MustDelete (key string ) { Delete (key ).Must () }
119+
114120func Expand (value string ) result.Result [string ] {
115121 return result .Wrap (envsubst .String (value )).Log (func (e * zerolog.Event ) {
116122 e .Str ("value" , value )
0 commit comments