diff options
| -rw-r--r-- | internal/cmd/config.go | 6 | ||||
| -rw-r--r-- | internal/config/configfile.go | 2 | ||||
| -rw-r--r-- | internal/tests/integration/config_test.go | 10 |
3 files changed, 14 insertions, 4 deletions
diff --git a/internal/cmd/config.go b/internal/cmd/config.go index 409bfa28..1fae0346 100644 --- a/internal/cmd/config.go +++ b/internal/cmd/config.go @@ -85,13 +85,13 @@ func readConfigFile(ctx context.Context, cmd *cobra.Command) (cfg *config.Config } cfg, err = config.Parse(f) - if err != nil && configRequired { - return cfg, fmt.Errorf("config file requested, but couldn't be parsed: %w", err) + if err != nil { + return cfg, fmt.Errorf("parsing config file %q: %w", cfgFile, err) } log.Debug().Str("cfgFile", cfgFile).Msg("using config file") - return cfg, err + return cfg, nil } // cobraConfig - initialize a config from the commandline options diff --git a/internal/config/configfile.go b/internal/config/configfile.go index 32067c8f..712d7310 100644 --- a/internal/config/configfile.go +++ b/internal/config/configfile.go @@ -24,7 +24,7 @@ func Parse(in io.Reader) (*Config, error) { dec := yaml.NewDecoder(in) err := dec.Decode(out) if err != nil && err != io.EOF { - return out, err + return out, fmt.Errorf("YAML decoding failed, syntax may be invalid: %w", err) } return out, nil } diff --git a/internal/tests/integration/config_test.go b/internal/tests/integration/config_test.go index fd7db539..d56616ae 100644 --- a/internal/tests/integration/config_test.go +++ b/internal/tests/integration/config_test.go @@ -238,6 +238,16 @@ suppressEmpty: true assert.ErrorIs(t, err, fs.ErrNotExist) } +func TestConfig_ConfigParseErrorSpecifiesFilename(t *testing.T) { + tmpDir := setupConfigTest(t) + + writeConfig(t, tmpDir, `templates: + dir: /foo/bar +`) + _, _, err := cmd(t).withDir(tmpDir.Path()).run() + assert.ErrorContains(t, err, `parsing config file ".gomplate.yaml": YAML decoding failed`) +} + func TestConfig_ConfigTemplatesSupportsMap(t *testing.T) { tmpDir := setupConfigTest(t) |
