From: Bjørn Erik Pedersen Date: Sun, 25 Feb 2018 09:50:44 +0000 (+0100) Subject: hugolib: Avoid scanning entire site to find the home X-Git-Tag: v0.37~7 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e39797fa720829dafd165aa25bfc2605700c38dc;p=brevno-suite%2Fhugo hugolib: Avoid scanning entire site to find the home See #4447 --- diff --git a/hugolib/page_collections.go b/hugolib/page_collections.go index 3bdb4d9c..157d4e68 100644 --- a/hugolib/page_collections.go +++ b/hugolib/page_collections.go @@ -152,6 +152,15 @@ func (*PageCollections) findPagesByKindIn(kind string, inPages Pages) Pages { return pages } +func (*PageCollections) findFirstPageByKindIn(kind string, inPages Pages) *Page { + for _, p := range inPages { + if p.Kind == kind { + return p + } + } + return nil +} + func (*PageCollections) findPagesByKindNotIn(kind string, inPages Pages) Pages { var pages Pages for _, p := range inPages { diff --git a/hugolib/site_sections.go b/hugolib/site_sections.go index 5de350b2..c8bca03e 100644 --- a/hugolib/site_sections.go +++ b/hugolib/site_sections.go @@ -161,18 +161,12 @@ func (s *Site) assembleSections() Pages { ) var ( - home *Page inPages = radix.New().Txn() inSections = radix.New().Txn() undecided Pages ) - homes := s.findPagesByKind(KindHome) - if len(homes) == 1 { - home = homes[0] - } else if len(homes) > 1 { - panic("Too many homes") - } + home := s.findFirstPageByKindIn(KindHome, s.Pages) for i, p := range s.Pages { if p.Kind != KindPage {