all repos — homestead @ 526002b13309812ce647faff2bdf66d6991ec467

Code for my website

render .md files under root as pages (x.md => /x)

Alan Pearce
commit

526002b13309812ce647faff2bdf66d6991ec467

parent

b0c19c83493787485428221330c654defcd18505

1 file changed, 37 insertions(+), 20 deletions(-)

changed files
M internal/builder/builder.gointernal/builder/builder.go
@@ -95,9 +95,9 @@ return nil, errors.WithMessage(err, "could not copy static files")
} log.Debug("reading posts", "source", options.Source) - pc, err := content.NewPostsCollection(&content.Config{ - Root: options.Source, - InputDir: "post", + cc, err := content.NewContentCollection(&content.Config{ + Root: options.Source, + PostDir: "post", }, log.Named("content")) if err != nil { return nil, err
@@ -105,11 +105,11 @@ }
sitemap := sitemap.New(config) lastMod := time.Now() - if len(pc.Posts) > 0 { - lastMod = pc.Posts[0].Date + if len(cc.Posts) > 0 { + lastMod = cc.Posts[0].Date } - for _, post := range pc.Posts { + for _, post := range cc.Posts { log.Debug("rendering post", "post", post.Basename) sitemap.AddPath(post.URL, post.Date) buf.Reset()
@@ -124,7 +124,7 @@ }
log.Debug("rendering tags list") buf.Reset() - if err := templates.TagsPage(config, "tags", mapset.Sorted(pc.Tags), "/tags").Render(ctx, buf); err != nil { + if err := templates.TagsPage(config, "tags", mapset.Sorted(cc.Tags), "/tags").Render(ctx, buf); err != nil { return nil, err } if err := storage.Write("/tags/", buf); err != nil {
@@ -132,9 +132,9 @@ return nil, err
} sitemap.AddPath("/tags/", lastMod) - for _, tag := range pc.Tags.ToSlice() { + for _, tag := range cc.Tags.ToSlice() { matchingPosts := []content.Post{} - for _, post := range pc.Posts { + for _, post := range cc.Posts { if slices.Contains(post.Taxonomies.Tags, tag) { matchingPosts = append(matchingPosts, post) }
@@ -171,7 +171,7 @@ }
log.Debug("rendering list page") buf.Reset() - if err := templates.ListPage(config, pc.Posts, "/post").Render(ctx, buf); err != nil { + if err := templates.ListPage(config, cc.Posts, "/post").Render(ctx, buf); err != nil { return nil, err } if err := storage.Write("/post/", buf); err != nil {
@@ -180,7 +180,7 @@ }
sitemap.AddPath("/post/", lastMod) log.Debug("rendering feed") - feed, err := renderFeed(config.Title, config, pc.Posts, "feed") + feed, err := renderFeed(config.Title, config, cc.Posts, "feed") if err != nil { return nil, errors.WithMessage(err, "could not render feed") }
@@ -214,17 +214,34 @@ return nil, err
} r.Hashes = append(r.Hashes, h) - log.Debug("rendering homepage") - post, err := pc.GetPost("index.md") + pages, err := filepath.Glob(joinSource("*.md")) if err != nil { - return nil, err + return nil, errors.WithMessage(err, "could not glob pagess") } - buf.Reset() - if err := templates.Homepage(config, pc.Posts, post).Render(ctx, buf); err != nil { - return nil, err - } - if err := storage.Write("/", buf); err != nil { - return nil, err + for _, p := range pages { + page, err := filepath.Rel(options.Source, p) + if err != nil { + return nil, err + } + post, err := cc.GetPage(page) + if err != nil { + return nil, err + } + + buf.Reset() + log.Debug("rendering page", "source", page, "output", post.Output) + if page == "index.md" { + if err := templates.Homepage(config, cc.Posts, post).Render(ctx, buf); err != nil { + return nil, err + } + } else { + if err := templates.Page(config, post).Render(ctx, buf); err != nil { + return nil, err + } + } + if err := storage.Write(post.Output, buf); err != nil { + return nil, err + } } // it would be nice to set LastMod here, but using the latest post