diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-11-01 11:28:30 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-11-01 21:06:35 +0100 |
commit | 1d18eb0574a57c3e9f468659d076a666a3dd76f2 (patch) | |
tree | 8536aa6e8e2fc496b3b2d7b66a2e5f0110e625a6 /hugolib/site.go | |
parent | 33a7b36fd42ee31dd79115ec6639bed24247332f (diff) |
Add file (line/col) info to ref/relref errors
See #5371
Diffstat (limited to 'hugolib/site.go')
-rw-r--r-- | hugolib/site.go | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/hugolib/site.go b/hugolib/site.go index a4746d875..d0d84dc60 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -28,6 +28,8 @@ import ( "strings" "time" + "github.com/gohugoio/hugo/common/text" + "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/common/herrors" @@ -493,16 +495,25 @@ func newSiteRefLinker(cfg config.Provider, s *Site) (siteRefLinker, error) { return siteRefLinker{s: s, errorLogger: logger, notFoundURL: notFoundURL}, nil } -func (s siteRefLinker) logNotFound(ref, what string, p *Page) { - if p == nil { +func (s siteRefLinker) logNotFound(ref, what string, p *Page, position text.Position) { + if position.IsValid() { + s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q: %s: %s", s.s.Lang(), ref, position.String(), what) + } else if p == nil { s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q: %s", s.s.Lang(), ref, what) } else { s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q from page %q: %s", s.s.Lang(), ref, p.pathOrTitle(), what) } - } -func (s *siteRefLinker) refLink(ref string, page *Page, relative bool, outputFormat string) (string, error) { +func (s *siteRefLinker) refLink(ref string, source interface{}, relative bool, outputFormat string) (string, error) { + + var page *Page + switch v := source.(type) { + case *Page: + page = v + case pageContainer: + page = v.page() + } var refURL *url.URL var err error @@ -520,14 +531,21 @@ func (s *siteRefLinker) refLink(ref string, page *Page, relative bool, outputFor if refURL.Path != "" { target, err := s.s.getPageNew(page, refURL.Path) + var pos text.Position + if err != nil || target == nil { + if p, ok := source.(text.Positioner); ok { + pos = p.Position() + + } + } if err != nil { - s.logNotFound(refURL.Path, err.Error(), page) + s.logNotFound(refURL.Path, err.Error(), page, pos) return s.notFoundURL, nil } if target == nil { - s.logNotFound(refURL.Path, "page not found", page) + s.logNotFound(refURL.Path, "page not found", page, pos) return s.notFoundURL, nil } @@ -537,7 +555,7 @@ func (s *siteRefLinker) refLink(ref string, page *Page, relative bool, outputFor o := target.OutputFormats().Get(outputFormat) if o == nil { - s.logNotFound(refURL.Path, fmt.Sprintf("output format %q", outputFormat), page) + s.logNotFound(refURL.Path, fmt.Sprintf("output format %q", outputFormat), page, pos) return s.notFoundURL, nil } permalinker = o |