diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2023-11-22 10:44:12 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-22 10:44:12 -0500 |
| commit | dba98c6d51f327959bf43691032ca16cee599264 (patch) | |
| tree | 8cc7ecb983e91fbd67bbaa769d4686ce5279c6ac /internal | |
| parent | e7c90a866047b10f04ff9b57f3582fbd1769c752 (diff) | |
Clarify config parsing errors (#1918)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal')
| -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) |
