From a163694dc653204681e067da4e66bfd1f1b59080 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Mon, 19 Jun 2023 17:38:52 +0200 Subject: [PATCH] Config parsing: fail on unknown fields and print them Useful against config validation or runtime failures caused by wrong field spelling or YAML indentation. --- cmd/icingadb-migrate/main.go | 2 +- pkg/config/config.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/icingadb-migrate/main.go b/cmd/icingadb-migrate/main.go index 9618ec2f..eefa1424 100644 --- a/cmd/icingadb-migrate/main.go +++ b/cmd/icingadb-migrate/main.go @@ -125,7 +125,7 @@ func parseConfig(f *Flags) (_ *Config, exit int) { return nil, 2 } - if err := yaml.NewDecoder(cf).Decode(c); err != nil { + if err := yaml.NewDecoder(cf, yaml.DisallowUnknownField()).Decode(c); err != nil { _, _ = fmt.Fprintf(os.Stderr, "can't parse config file: %s\n", err.Error()) return nil, 2 } diff --git a/pkg/config/config.go b/pkg/config/config.go index 1388ba93..db6662c3 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -54,7 +54,7 @@ func FromYAMLFile(name string) (*Config, error) { defer f.Close() c := &Config{} - d := yaml.NewDecoder(f) + d := yaml.NewDecoder(f, yaml.DisallowUnknownField()) if err := defaults.Set(c); err != nil { return nil, errors.Wrap(err, "can't set config defaults")