From 2e11c2efb2e88e8460a37909cc6d440997c54fd5 Mon Sep 17 00:00:00 2001 From: Evgeniy Shurmin Date: Wed, 2 Dec 2020 11:23:17 +0300 Subject: [PATCH 1/3] use fmt.Sprintf for tag name --- envdecode.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/envdecode.go b/envdecode.go index c8c0a65..f0b04f9 100644 --- a/envdecode.go +++ b/envdecode.go @@ -58,8 +58,8 @@ type Decoder interface { // time.ParseDuration() function and *url.URL is supported via the // url.Parse() function. Slices are supported for all above mentioned // primitive types. Semicolon is used as delimiter in environment variables. -func Decode(target interface{}) error { - nFields, err := decode(target, false) +func Decode(target interface{}, args ...interface{}) error { + nFields, err := decode(target, false, args) if err != nil { return err } @@ -90,7 +90,7 @@ func StrictDecode(target interface{}) error { return nil } -func decode(target interface{}, strict bool) (int, error) { +func decode(target interface{}, strict bool, args ...interface{}) (int, error) { s := reflect.ValueOf(target) if s.Kind() != reflect.Ptr || s.IsNil() { return 0, ErrInvalidTarget @@ -145,6 +145,8 @@ func decode(target interface{}, strict bool) (int, error) { continue } + tag = fmt.Sprintf(tag, args) + parts := strings.Split(tag, ",") env := os.Getenv(parts[0]) From f063852e447dc717a82190913bf842948e56eeaf Mon Sep 17 00:00:00 2001 From: Evgeniy Shurmin Date: Wed, 2 Dec 2020 12:18:31 +0300 Subject: [PATCH 2/3] typo --- envdecode.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envdecode.go b/envdecode.go index f0b04f9..0ebc623 100644 --- a/envdecode.go +++ b/envdecode.go @@ -145,7 +145,7 @@ func decode(target interface{}, strict bool, args ...interface{}) (int, error) { continue } - tag = fmt.Sprintf(tag, args) + tag = fmt.Sprintf(tag, args...) parts := strings.Split(tag, ",") env := os.Getenv(parts[0]) From 6e3296d5a95d244b4d6b7379da8d44a5d55e593a Mon Sep 17 00:00:00 2001 From: Evgeniy Shurmin Date: Wed, 2 Dec 2020 12:18:31 +0300 Subject: [PATCH 3/3] typo --- envdecode.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/envdecode.go b/envdecode.go index 0ebc623..cd5bc6f 100644 --- a/envdecode.go +++ b/envdecode.go @@ -59,7 +59,7 @@ type Decoder interface { // url.Parse() function. Slices are supported for all above mentioned // primitive types. Semicolon is used as delimiter in environment variables. func Decode(target interface{}, args ...interface{}) error { - nFields, err := decode(target, false, args) + nFields, err := decode(target, false, args...) if err != nil { return err } @@ -75,8 +75,8 @@ func Decode(target interface{}, args ...interface{}) error { // StrictDecode is similar to Decode except all fields will have an implicit // ",strict" on all fields. -func StrictDecode(target interface{}) error { - nFields, err := decode(target, true) +func StrictDecode(target interface{}, args ...interface{}) error { + nFields, err := decode(target, true, args...) if err != nil { return err } @@ -129,7 +129,7 @@ func decode(target interface{}, strict bool, args ...interface{}) (int, error) { break } - n, err := decode(ss, strict) + n, err := decode(ss, strict, args...) if err != nil { return 0, err }