diff options
Diffstat (limited to 'common/herrors/line_number_extractors.go')
-rw-r--r-- | common/herrors/line_number_extractors.go | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/common/herrors/line_number_extractors.go b/common/herrors/line_number_extractors.go index 13e94614d..3df62bdfe 100644 --- a/common/herrors/line_number_extractors.go +++ b/common/herrors/line_number_extractors.go @@ -16,6 +16,10 @@ package herrors import ( "regexp" "strconv" + + "github.com/pkg/errors" + + "github.com/pelletier/go-toml/v2" ) var lineNumberExtractors = []lineNumberExtractor{ @@ -24,8 +28,7 @@ var lineNumberExtractors = []lineNumberExtractor{ newLineNumberErrHandlerFromRegexp(".*:(\\d+):"), // TOML parse errors - newLineNumberErrHandlerFromRegexp(".*Near line (\\d+)(\\s.*)"), - + tomlLineNumberExtractor, // YAML parse errors newLineNumberErrHandlerFromRegexp("line (\\d+):"), @@ -35,6 +38,14 @@ var lineNumberExtractors = []lineNumberExtractor{ type lineNumberExtractor func(e error) (int, int) +var tomlLineNumberExtractor = func(e error) (int, int) { + e = errors.Cause(e) + if terr, ok := e.(*toml.DecodeError); ok { + return terr.Position() + } + return -1, -1 +} + func newLineNumberErrHandlerFromRegexp(expression string) lineNumberExtractor { re := regexp.MustCompile(expression) return extractLineNo(re) |