From c750a95e22e4342ffd181c742bb61a3ff53aaa28 Mon Sep 17 00:00:00 2001 From: Joel Scoble Date: Wed, 20 Aug 2014 10:09:35 -0500 Subject: [PATCH] support for futre/draft summary info output --- hugolib/page.go | 11 +++++++++++ hugolib/site.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/hugolib/page.go b/hugolib/page.go index 9f29630ec..a538fc5b1 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -304,6 +304,17 @@ func (page *Page) ShouldBuild() bool { return false } +func (page *Page) IsDraft() bool { + return page.Draft +} + +func (page *Page) IsFuture() bool { + if page.PublishDate.Before(time.Now()) { + return false + } + return true +} + func (p *Page) Permalink() (string, error) { link, err := p.permalink() if err != nil { diff --git a/hugolib/site.go b/hugolib/site.go index 0eddb0318..134b1898e 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -70,6 +70,8 @@ type Site struct { Completed chan bool RunMode runmode params map[string]interface{} + draftCount int + futureCount int } type SiteInfo struct { @@ -348,6 +350,14 @@ func (s *Site) CreatePages() (err error) { s.Pages = append(s.Pages, page) } + if page.IsDraft() { + s.draftCount += 1 + } + + if page.IsFuture() { + s.futureCount += 1 + } + return }(fi) } @@ -806,7 +816,9 @@ func (s *Site) RenderSitemap() error { } func (s *Site) Stats() { - jww.FEEDBACK.Printf("%d pages created \n", len(s.Pages)) + jww.FEEDBACK.Println(s.draftStats()) + jww.FEEDBACK.Println(s.futureStats()) + jww.FEEDBACK.Printf("%d pages created \n", len(s.Pages)) taxonomies := viper.GetStringMapString("Taxonomies") @@ -951,3 +963,41 @@ func (s *Site) WriteAlias(path string, permalink template.HTML) (err error) { return s.Alias.Publish(path, permalink) } + +func (s *Site) draftStats() string { + var msg string + + switch s.draftCount { + case 0: + return "0 draft content " + case 1: + msg = "1 draft rendered " + default: + msg = fmt.Sprintf("%d drafts rendered", s.draftCount) + } + + if viper.GetBool("BuildDrafts") { + return fmt.Sprintf("%d of ", s.draftCount) + msg + } + + return "0 of " + msg +} + +func (s *Site) futureStats() string { + var msg string + + switch s.futureCount { + case 0: + return "0 future content " + case 1: + msg = "1 future rendered " + default: + msg = fmt.Sprintf("%d future rendered", s.draftCount) + } + + if viper.GetBool("BuildFuture") { + return fmt.Sprintf("%d of ", s.futureCount) + msg + } + + return "0 of " + msg +}