all repos — homestead @ e2f03b8c6c5cbcdb0945b1944719b62369ede6e4

Code for my website

fix style hash not calculated for pages

Alan Pearce
commit

e2f03b8c6c5cbcdb0945b1944719b62369ede6e4

parent

72b4c0f972a3bdb1a5bec19544d828f2942a6fab

M internal/builder/builder.gointernal/builder/builder.go
@@ -178,23 +178,10 @@ return err
} } - pages, err := filepath.Glob(joinSource("*.md")) - if err != nil { - return errors.WithMessage(err, "could not glob pagess") - } - for _, p := range pages { - page, err := filepath.Rel(options.Source, p) - if err != nil { - return err - } - post, err := cc.GetPage(page) - if err != nil { - return err - } - + for _, post := range cc.Pages { buf.Reset() - log.Debug("rendering page", "source", page, "path", post.URL) - if page == "index.md" { + 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 }
@@ -203,7 +190,9 @@ if err := templates.Page(config, post).Render(ctx, buf); err != nil {
return err } } - if err := storage.WritePost(post, buf); err != nil { + file := storage.NewFileFromPost(post) + file.ContentType = "text/html; charset=utf-8" + if err := storage.WriteFile(file, buf); err != nil { return err } }
M internal/content/posts.gointernal/content/posts.go
@@ -74,7 +74,7 @@ if err != nil {
return nil, errors.WithMessagef(err, "could not get commit log for file %s", filename) } post := &Post{ - Input: fp, + Input: filename, Basename: filepath.Base(url), URL: url, PostMatter: &PostMatter{},
@@ -102,7 +102,7 @@ if err != nil {
return nil, errors.WithMessagef(err, "could not get commit log for file %s", filename) } post := &Post{ - Input: fp, + Input: filename, Basename: filepath.Base(url), URL: url, PostMatter: &PostMatter{},
M internal/storage/files/writer.gointernal/storage/files/writer.go
@@ -80,6 +80,13 @@
return nil } +func (f *Files) NewFileFromPost(post *content.Post) *storage.File { + return &storage.File{ + Path: post.URL, + Encodings: map[string]*buffer.Buffer{}, + } +} + func (f *Files) WriteFile(file *storage.File, content *buffer.Buffer) error { return f.Write(file.Path, content) }
M internal/storage/interface.gointernal/storage/interface.go
@@ -13,6 +13,8 @@
type Writer interface { Mkdirp(path string) error + NewFileFromPost(post *content.Post) *File + Write(pathname string, content *buffer.Buffer) error WritePost(post *content.Post, content *buffer.Buffer) error WriteFile(file *File, content *buffer.Buffer) error
M internal/storage/sqlite/reader.gointernal/storage/sqlite/reader.go
@@ -76,7 +76,7 @@ defer rows.Close()
count := 0 for rows.Next() { - count += 1 + count++ err = rows.Scan( &file.ContentType, &unixTime,
M internal/storage/sqlite/writer.gointernal/storage/sqlite/writer.go
@@ -133,7 +133,13 @@
func (s *Writer) storeFile(urlID int64, file *storage.File) (int64, error) { if file.ContentType == "" { file.ContentType = http.DetectContentType(file.Encodings["identity"].Bytes()) - s.log.Warn("file has no content type, sniffing", "path", file.Path, "sniffed", file.ContentType) + s.log.Warn( + "file has no content type, sniffing", + "path", + file.Path, + "sniffed", + file.ContentType, + ) } r, err := s.queries.insertFile.Exec( sql.Named("url_id", urlID),
@@ -178,38 +184,26 @@ func contentType(pathname string) string {
return mime.TypeByExtension(filepath.Ext(pathNameToFileName(pathname))) } -func (s *Writer) WritePost(post *content.Post, content *buffer.Buffer) error { - s.log.Debug("storing post", "title", post.Title) - bytes := content.Bytes() - etag, err := etag(bytes) - if err != nil { - return errors.WithMessage(err, "calculating etag") - } - +func (s *Writer) NewFileFromPost(post *content.Post) *storage.File { file := &storage.File{ Path: post.URL, - ContentType: contentType(post.URL), LastModified: post.Date, - Etag: etag, Encodings: map[string]*buffer.Buffer{}, } - return s.WriteFile(file, content) + return file } -func (s *Writer) Write(pathname string, content *buffer.Buffer) error { - bytes := content.Bytes() +func (s *Writer) WritePost(post *content.Post, content *buffer.Buffer) error { + s.log.Debug("storing post", "title", post.Title) - etag, err := etag(bytes) - if err != nil { - return errors.WithMessage(err, "calculating etag") - } + return s.WriteFile(s.NewFileFromPost(post), content) +} +func (s *Writer) Write(pathname string, content *buffer.Buffer) error { file := &storage.File{ Path: pathname, - ContentType: contentType(pathname), LastModified: time.Now(), - Etag: etag, Encodings: map[string]*buffer.Buffer{}, }
@@ -228,6 +222,17 @@ if file.Encodings == nil {
file.Encodings = map[string]*buffer.Buffer{} } file.Encodings["identity"] = content + + if file.ContentType == "" { + file.ContentType = contentType(file.Path) + } + + if file.Etag == "" { + file.Etag, err = etag(content.Bytes()) + if err != nil { + return errors.WithMessage(err, "could not calculate file etag") + } + } err = file.CalculateStyleHash() if err != nil {