summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/cmd/config.go6
-rw-r--r--internal/config/configfile.go2
-rw-r--r--internal/tests/integration/config_test.go10
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)