9
file.go
9
file.go
@@ -7,6 +7,7 @@ import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"github.com/imdario/mergo"
|
||||
"github.com/unistack-org/micro/v3/codec"
|
||||
"github.com/unistack-org/micro/v3/config"
|
||||
)
|
||||
@@ -62,7 +63,13 @@ func (c *fileConfig) Load(ctx context.Context) error {
|
||||
var buf []byte
|
||||
buf, err = ioutil.ReadAll(io.LimitReader(fp, int64(codec.DefaultMaxMsgSize)))
|
||||
if err == nil {
|
||||
err = c.opts.Codec.Unmarshal(buf, c.opts.Struct)
|
||||
src, err := config.Zero(c.opts.Struct)
|
||||
if err == nil {
|
||||
err = c.opts.Codec.Unmarshal(buf, src)
|
||||
if err == nil {
|
||||
err = mergo.Merge(c.opts.Struct, src, mergo.WithOverride, mergo.WithTypeCheck, mergo.WithAppendSlice)
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil && !c.opts.AllowFail {
|
||||
return err
|
||||
|
Reference in New Issue
Block a user