add defaut config parser
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
a7a3c679d1
commit
2dcd30b21c
@ -173,6 +173,12 @@ func (c *defaultConfig) fillValues(ctx context.Context, valueOf reflect.Value) e
|
||||
continue
|
||||
}
|
||||
switch value.Kind() {
|
||||
case reflect.Struct:
|
||||
value.Set(reflect.Indirect(reflect.New(value.Type())))
|
||||
if err := c.fillValues(ctx, value); err != nil {
|
||||
return err
|
||||
}
|
||||
continue
|
||||
case reflect.Ptr:
|
||||
if value.IsNil() {
|
||||
if value.Type().Elem().Kind() != reflect.Struct {
|
||||
|
@ -11,6 +11,9 @@ import (
|
||||
type Cfg struct {
|
||||
StringValue string `default:"string_value"`
|
||||
IntValue int `default:"99"`
|
||||
StructValue struct {
|
||||
StringValue string `default:"string_value"`
|
||||
}
|
||||
}
|
||||
|
||||
func TestDefault(t *testing.T) {
|
||||
@ -50,7 +53,7 @@ func TestDefault(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if conf.StringValue != "string_value" || conf.IntValue != 99 {
|
||||
if conf.StringValue != "string_value" || conf.IntValue != 99 || conf.StructValue.StringValue != "string_value" {
|
||||
t.Fatalf("load failed: %#+v", conf)
|
||||
}
|
||||
|
||||
@ -63,4 +66,5 @@ func TestDefault(t *testing.T) {
|
||||
t.Fatal("AfterLoad option not working")
|
||||
}
|
||||
|
||||
t.Logf("%#+v\n", conf)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user