diff --git a/multiconfig.go b/multiconfig.go index 0070344..3fa5df2 100644 --- a/multiconfig.go +++ b/multiconfig.go @@ -52,9 +52,11 @@ func NewWithPath(path string) *DefaultLoader { } e := &EnvironmentLoader{} - f := &FlagLoader{} + // FlagLoader is unusable right now, refer to: https://github.com/koding/multiconfig/issues/75 + // f := &FlagLoader{} - loaders = append(loaders, e, f) + // loaders = append(loaders, e, f) + loaders = append(loaders, e) loader := MultiLoader(loaders...) d := &DefaultLoader{} diff --git a/validator.go b/validator.go index 67d04e2..d700825 100644 --- a/validator.go +++ b/validator.go @@ -58,6 +58,17 @@ func (e *RequiredValidator) processField(fieldName string, field *structs.Field) return err } } + case reflect.Ptr: + if field.IsExported() && reflect.ValueOf(field.Value()).Elem().Kind() == reflect.Struct { + fieldName += "." + for _, f := range field.Fields() { + if err := e.processField(fieldName, f); err != nil { + return err + } + } + return nil + } + fallthrough default: val := field.Tag(e.TagName) if val != e.TagValue {