diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 20:20:48 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-23 08:09:41 +0200 |
commit | ed7b3e261909fe425ef64216f12806840c45b205 (patch) | |
tree | c082a1f0b2f0ac4cbb95faa1779fdbaa2845b5a7 /hugolib/config.go | |
parent | 2bf686ee217808186385bfcf6156f15bbdb33651 (diff) |
commands, hugolib: Get file context in "config parse failed" errors
Fixes #5325
Diffstat (limited to 'hugolib/config.go')
-rw-r--r-- | hugolib/config.go | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/hugolib/config.go b/hugolib/config.go index b21981304..32fa2dfca 100644 --- a/hugolib/config.go +++ b/hugolib/config.go @@ -16,10 +16,11 @@ package hugolib import ( "errors" "fmt" - "io" "strings" + "github.com/gohugoio/hugo/common/herrors" + "github.com/gohugoio/hugo/hugolib/paths" _errors "github.com/pkg/errors" @@ -106,12 +107,23 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid v.SetConfigFile(configFilenames[0]) v.AddConfigPath(d.Path) + applyFileContext := func(filename string, err error) error { + err, _ = herrors.WithFileContextForFile( + err, + filename, + filename, + fs, + herrors.SimpleLineMatcher) + + return err + } + var configFileErr error err := v.ReadInConfig() if err != nil { if _, ok := err.(viper.ConfigParseError); ok { - return nil, configFiles, err + return nil, configFiles, applyFileContext(v.ConfigFileUsed(), err) } configFileErr = ErrNoConfigFile } @@ -129,7 +141,7 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid return nil, configFiles, fmt.Errorf("Unable to open Config file.\n (%s)\n", err) } if err = v.MergeConfig(r); err != nil { - return nil, configFiles, fmt.Errorf("Unable to parse/merge Config file (%s).\n (%s)\n", configFile, err) + return nil, configFiles, applyFileContext(configFile, err) } configFiles = append(configFiles, configFile) } |