diff options
author | René 'Necoro' Neumann <necoro@necoro.eu> | 2022-01-08 20:03:36 +0100 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.eu> | 2022-01-08 20:03:36 +0100 |
commit | 180aa45d40e5d58d579fcaba44b94bcb8e3e08be (patch) | |
tree | e3a85c8e93da07aa97fcfaedd0f4d1add5e20401 /pkg/config | |
parent | 8bbd94713d8b4a1e4a0a28aa26841d836dd25aab (diff) | |
download | feed2imap-go-180aa45d40e5d58d579fcaba44b94bcb8e3e08be.tar.gz feed2imap-go-180aa45d40e5d58d579fcaba44b94bcb8e3e08be.tar.bz2 feed2imap-go-180aa45d40e5d58d579fcaba44b94bcb8e3e08be.zip |
Fix configuration parsing, when the target field is not of a primitive type.
Diffstat (limited to 'pkg/config')
-rw-r--r-- | pkg/config/yaml.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pkg/config/yaml.go b/pkg/config/yaml.go index ad1acf7..a80c80d 100644 --- a/pkg/config/yaml.go +++ b/pkg/config/yaml.go @@ -150,7 +150,7 @@ func buildOptions(globalFeedOptions *Options, options Map) (feedOptions Options, n := gv.NumField() for i := 0; i < n; i++ { - val := fv.Field(i) + field := fv.Field(i) f := fv.Type().Field(i) if f.PkgPath != "" && !f.Anonymous { @@ -166,10 +166,14 @@ func buildOptions(globalFeedOptions *Options, options Map) (feedOptions Options, set, ok := options[name] if ok { // in the map -> copy and delete - val.Set(reflect.ValueOf(set)) + value := reflect.ValueOf(set) + if !value.Type().AssignableTo(field.Type()) { + value = value.Convert(field.Type()) + } + field.Set(value) delete(options, name) } else { // not in the map -> copy from global - val.Set(gv.Field(i)) + field.Set(gv.Field(i)) } } |