diff --git a/agent/config/builder.go b/agent/config/builder.go index 974028284..b058d7f22 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -231,6 +231,17 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) { src.Format = FormatFrom(src.Name) if configFormat != "" { src.Format = configFormat + } else { + // If they haven't forced things to a specific format, + // then skip anything we don't understand, which is the + // behavior before we added the -config-format option. + switch src.Format { + case "json", "hcl": + // OK + default: + // SKIP + continue + } } if src.Format == "" { return RuntimeConfig{}, fmt.Errorf(`config: Missing or invalid file extension for %q. Please use ".json" or ".hcl".`, src.Name) diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 0776b4383..79deb645b 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -361,6 +361,21 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { rt.DataDir = dataDir }, }, + { + desc: "-config-format disabled, skip unknown files", + args: []string{ + `-data-dir=` + dataDir, + `-config-dir`, filepath.Join(dataDir, "conf"), + }, + patch: func(rt *RuntimeConfig) { + rt.Datacenter = "a" + rt.DataDir = dataDir + }, + pre: func() { + writeFile(filepath.Join(dataDir, "conf", "valid.json"), []byte(`{"datacenter":"a"}`)) + writeFile(filepath.Join(dataDir, "conf", "invalid.skip"), []byte(`NOPE`)) + }, + }, { desc: "-config-format=json", args: []string{