shithub: hugo

Download patch

ref: 0fdea0c2c222bb3f21187d0ff34fbe92980ae851
parent: 097b782a8094af5d1b4f2e4dd5194488fd421e3b
author: Noah Campbell <[email protected]>
date: Fri Aug 30 17:24:25 EDT 2013

Return an error with WritePublic

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -439,7 +439,10 @@
 			if err != nil {
 				return err
 			}
-			s.WritePublic(a, content.Bytes())
+			err = s.WritePublic(a, content.Bytes())
+			if err != nil {
+				return err
+			}
 		}
 	}
 	return nil
@@ -456,10 +459,14 @@
 	return nil
 }
 
-func (s *Site) WritePages() {
+func (s *Site) WritePages() (err error) {
 	for _, p := range s.Pages {
-		s.WritePublic(p.OutFile, p.RenderedContent.Bytes())
+		err = s.WritePublic(p.OutFile, p.RenderedContent.Bytes())
+		if err != nil {
+			return
+		}
 	}
+	return
 }
 
 func (s *Site) RenderIndexes() error {
@@ -493,7 +500,10 @@
 				base = plural + "/" + k + "/" + "index"
 			}
 
-			s.WritePublic(base+".html", x.Bytes())
+			err = s.WritePublic(base+".html", x.Bytes())
+			if err != nil {
+				return err
+			}
 
 			if a := s.Tmpl.Lookup("rss.xml"); a != nil {
 				// XML Feed
@@ -505,7 +515,10 @@
 				}
 				n.Permalink = template.HTML(string(n.Site.BaseUrl) + n.Url)
 				s.Tmpl.ExecuteTemplate(y, "rss.xml", n)
-				s.WritePublic(base+".xml", y.Bytes())
+				err = s.WritePublic(base+".xml", y.Bytes())
+				if err != nil {
+					return err
+				}
 			}
 		}
 	}
@@ -527,8 +540,14 @@
 			n.Data["OrderedIndex"] = s.Info.Indexes[plural]
 
 			x, err := s.RenderThing(n, layout)
-			s.WritePublic(plural+"/index.html", x.Bytes())
-			return err
+			if err != nil {
+				return err
+			}
+
+			err = s.WritePublic(plural+"/index.html", x.Bytes())
+			if err != nil {
+				return err
+			}
 		}
 	}
 	return
@@ -549,7 +568,10 @@
 		if err != nil {
 			return err
 		}
-		s.WritePublic(section+"/index.html", content.Bytes())
+		err = s.WritePublic(section+"/index.html", content.Bytes())
+		if err != nil {
+			return err
+		}
 
 		if a := s.Tmpl.Lookup("rss.xml"); a != nil {
 			// XML Feed
@@ -561,7 +583,8 @@
 			n.Permalink = template.HTML(string(n.Site.BaseUrl) + n.Url)
 			y := s.NewXMLBuffer()
 			s.Tmpl.ExecuteTemplate(y, "rss.xml", n)
-			s.WritePublic(section+"/index.xml", y.Bytes())
+			err = s.WritePublic(section+"/index.xml", y.Bytes())
+			return err
 		}
 	}
 	return nil
@@ -585,7 +608,10 @@
 	if err != nil {
 		return err
 	}
-	s.WritePublic("index.html", x.Bytes())
+	err = s.WritePublic("index.html", x.Bytes())
+	if err != nil {
+		return err
+	}
 
 	if a := s.Tmpl.Lookup("rss.xml"); a != nil {
 		// XML Feed
@@ -594,7 +620,8 @@
 		n.Permalink = template.HTML(string(n.Site.BaseUrl) + "index.xml")
 		y := s.NewXMLBuffer()
 		s.Tmpl.ExecuteTemplate(y, "rss.xml", n)
-		s.WritePublic("index.xml", y.Bytes())
+		err = s.WritePublic("index.xml", y.Bytes())
+		return err
 	}
 
 	if a := s.Tmpl.Lookup("404.html"); a != nil {
@@ -605,7 +632,8 @@
 		if err != nil {
 			return err
 		}
-		s.WritePublic("404.html", x.Bytes())
+		err = s.WritePublic("404.html", x.Bytes())
+		return err
 	}
 
 	return nil
@@ -652,10 +680,10 @@
 	return bytes.NewBufferString(header)
 }
 
-func (s *Site) WritePublic(path string, content []byte) {
+func (s *Site) WritePublic(path string, content []byte) (err error) {
 
 	if s.Target != nil {
-		s.Target.Publish(path, bytes.NewReader(content))
+		return s.Target.Publish(path, bytes.NewReader(content))
 	}
 
 	if s.Config.Verbose {
@@ -665,14 +693,14 @@
 	path, filename := filepath.Split(path)
 
 	path = filepath.FromSlash(s.Config.GetAbsPath(filepath.Join(s.Config.PublishDir, path)))
-	err := mkdirIf(path)
-
+	err = mkdirIf(path)
 	if err != nil {
-		fmt.Println(err)
+		return
 	}
 
 	file, _ := os.Create(filepath.Join(path, filename))
 	defer file.Close()
 
-	file.Write(content)
+	_, err = file.Write(content)
+	return
 }