all repos — homestead @ a9f47f4e4ed3223e86dc1d5c3edd005b8d9ce589

Code for my website

refactor: return errors with stack traces, where appropriate

Alan Pearce
commit

a9f47f4e4ed3223e86dc1d5c3edd005b8d9ce589

parent

f17c0bd9ce8ad16b39c9c5ba80c917049e135bed

1 file changed, 30 insertions(+), 31 deletions(-)

changed files
M internal/builder/builder.gointernal/builder/builder.go
@@ -39,20 +39,20 @@ return filepath.Join(src, rel)
} } -func copyFile(storage storage.Writer, src string, rel string) error { +func copyFile(storage storage.Writer, src string, rel string) errors.E { buf := new(buffer.Buffer) sf, err := os.Open(src) if err != nil { - return err + return errors.WithStack(err) } defer sf.Close() buf.Reset() if _, err := io.Copy(buf, sf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write("/"+rel, "", buf); err != nil { - return err + return errors.WithStack(err) } return nil
@@ -62,7 +62,7 @@ func build(
options *Options, config *config.Config, log *log.Logger, -) error { +) errors.E { ctx := context.TODO() buf := new(buffer.Buffer) joinSource := joinSourcePath(options.Source)
@@ -76,7 +76,7 @@ PostDir: postDir,
Repo: options.Repo, }, log.Named("content")) if err != nil { - return err + return errors.WithStack(err) } sitemap := sitemap.New(config)
@@ -94,17 +94,17 @@ return errors.WithMessage(err, "could not render post")
} if err := storage.WritePost(post, buf); err != nil { - return err + return errors.WithStack(err) } } log.Debug("rendering tags list") buf.Reset() if err := templates.TagsPage(config, "tags", mapset.Sorted(cc.Tags), "/tags").Render(ctx, buf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write("/tags/", "Tags", buf); err != nil { - return err + return errors.WithStack(err) } sitemap.AddPath("/tags/", lastMod)
@@ -119,10 +119,10 @@ log.Debug("rendering tags page", "tag", tag)
url := path.Join("/tags", tag) + "/" buf.Reset() if err := templates.TagPage(config, tag, matchingPosts, url).Render(ctx, buf); err != nil { - return err + return errors.WithStack(err) } if err = storage.Write(url, tag, buf); err != nil { - return err + return errors.WithStack(err) } sitemap.AddPath(url, matchingPosts[0].Date)
@@ -139,20 +139,20 @@ return errors.WithMessage(err, "could not render tag feed page")
} buf.Reset() if _, err := feed.WriteTo(buf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write(path.Join("/tags", tag, "atom.xml"), title, buf); err != nil { - return err + return errors.WithStack(err) } } log.Debug("rendering list page") buf.Reset() if err := templates.ListPage(config, cc.Posts, path.Join("/", postDir)).Render(ctx, buf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write(path.Join("/", postDir)+"/", "Posts", buf); err != nil { - return err + return errors.WithStack(err) } sitemap.AddPath(path.Join("/", postDir)+"/", lastMod)
@@ -163,10 +163,10 @@ return errors.WithMessage(err, "could not render feed")
} buf.Reset() if _, err := feed.WriteTo(buf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write("/atom.xml", config.Title, buf); err != nil { - return err + return errors.WithStack(err) } for _, filename := range []string{"feed-styles.xsl", "style.css"} {
@@ -176,7 +176,7 @@ if err := template.CopyFile(filename, buf); err != nil {
return errors.WithMessagef(err, "could not render template file %s", filename) } if err := storage.Write("/"+filename, "", buf); err != nil { - return err + return errors.WithStack(err) } }
@@ -185,17 +185,17 @@ buf.Reset()
log.Debug("rendering page", "source", post.Input, "path", post.URL) if post.URL == "/" { if err := templates.Homepage(config, cc.Posts, post).Render(ctx, buf); err != nil { - return err + return errors.WithStack(err) } } else { if err := templates.Page(config, post).Render(ctx, buf); err != nil { - return err + return errors.WithStack(err) } } file := storage.NewFileFromPost(post) file.ContentType = "text/html; charset=utf-8" if err := storage.WriteFile(file, buf); err != nil { - return err + return errors.WithStack(err) } }
@@ -203,31 +203,30 @@ // it would be nice to set LastMod here, but using the latest post
// date would be wrong as the homepage has its own content file // without a date, which could be newer sitemap.AddPath("/", time.Time{}) - err = buf.SeekStart() - if err != nil { - return err + if err := buf.SeekStart(); err != nil { + return errors.WithStack(err) } log.Debug("rendering sitemap") buf.Reset() if _, err := sitemap.WriteTo(buf); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write("/sitemap.xml", "sitemap", buf); err != nil { - return err + return errors.WithStack(err) } log.Debug("rendering robots.txt") rob, err := template.RenderRobotsTXT(config) if err != nil { - return err + return errors.WithStack(err) } buf.Reset() if _, err := io.Copy(buf, rob); err != nil { - return err + return errors.WithStack(err) } if err := storage.Write("/robots.txt", "", buf); err != nil { - return err + return errors.WithStack(err) } for _, sf := range cc.StaticFiles {
@@ -235,14 +234,14 @@ src := joinSource(sf)
log.Debug("copying static file", "sf", sf, "src", src) err = copyFile(storage, src, sf) if err != nil { - return err + return errors.WithStack(err) } } return nil } -func BuildSite(options *Options, cfg *config.Config, log *log.Logger) error { +func BuildSite(options *Options, cfg *config.Config, log *log.Logger) errors.E { if cfg == nil { return errors.New("config is nil") }