render .md files under root as pages (x.md => /x)
1 file changed, 37 insertions(+), 20 deletions(-)
changed files
M internal/builder/builder.go → internal/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