hugolib: Fix panic for Permalink in 404 etc. templates
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 25 Mar 2017 19:31:43 +0000 (20:31 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 27 Mar 2017 13:43:56 +0000 (15:43 +0200)
hugolib/page_paths.go
hugolib/site_render.go

index 00d96c05ceccbb2457edd06abe1de836ea667884..0d1b1c363d59bb58bfdba11e456d6c6c7635fed6 100644 (file)
@@ -71,7 +71,7 @@ type targetPathDescriptor struct {
 // and URLs for this Page.
 func (p *Page) createTargetPathDescriptor(t output.Format) (targetPathDescriptor, error) {
        if p.targetPathDescriptorPrototype == nil {
-               panic("Must run initTargetPathDescriptor()")
+               panic(fmt.Sprintf("Must run initTargetPathDescriptor() for page %q, kind %q", p.Title, p.Kind))
        }
        d := *p.targetPathDescriptorPrototype
        d.Type = t
index fdac0348901e31c738fe339f53fe17031f5341d8..5f46bd0c9f9937274192e246fd98b2f7c163ce59 100644 (file)
@@ -216,11 +216,16 @@ func (s *Site) render404() error {
        }
 
        p := s.newNodePage(kind404)
+
        p.Title = "404 Page not found"
        p.Data["Pages"] = s.Pages
        p.Pages = s.Pages
        p.URLPath.URL = "404.html"
 
+       if err := p.initTargetPathDescriptor(); err != nil {
+               return err
+       }
+
        nfLayouts := []string{"404.html"}
 
        return s.renderAndWritePage("404 page", "404.html", p, s.appendThemeTemplates(nfLayouts)...)
@@ -245,6 +250,9 @@ func (s *Site) renderSitemap() error {
 
        page := s.newNodePage(kindSitemap)
        page.URLPath.URL = ""
+       if err := page.initTargetPathDescriptor(); err != nil {
+               return err
+       }
        page.Sitemap.ChangeFreq = sitemapDefault.ChangeFreq
        page.Sitemap.Priority = sitemapDefault.Priority
        page.Sitemap.Filename = sitemapDefault.Filename
@@ -252,6 +260,11 @@ func (s *Site) renderSitemap() error {
        n.Data["Pages"] = pages
        n.Pages = pages
 
+       // TODO(bep) output
+       if err := page.initTargetPathDescriptor(); err != nil {
+               return err
+       }
+
        // TODO(bep) this should be done somewhere else
        for _, page := range pages {
                if page.Sitemap.ChangeFreq == "" {
@@ -284,6 +297,9 @@ func (s *Site) renderRobotsTXT() error {
        }
 
        n := s.newNodePage(kindRobotsTXT)
+       if err := n.initTargetPathDescriptor(); err != nil {
+               return err
+       }
        n.Data["Pages"] = s.Pages
        n.Pages = s.Pages