support for futre/draft summary info output
authorJoel Scoble <joel.scoble@outlook.com>
Wed, 20 Aug 2014 15:09:35 +0000 (10:09 -0500)
committerspf13 <steve.francia@gmail.com>
Wed, 20 Aug 2014 18:21:15 +0000 (14:21 -0400)
hugolib/page.go
hugolib/site.go

index 9f29630ecef8c2024eec8e63de6803cd89e50604..a538fc5b1d30cc828f9d478f4ec7bef9f37669d9 100644 (file)
@@ -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 {
index 0eddb03180183c95f241efb89e8ab300450084d5..134b1898e93374958a1910df1ad0d32bb1d2b45d 100644 (file)
@@ -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
+}