Added feeds for crossposting and a rebuild site button
This commit is contained in:
parent
76ed54f119
commit
fa9be69045
6 changed files with 62 additions and 11 deletions
|
|
@ -72,7 +72,17 @@ func (b *Builder) BuildSite(outDir string) error {
|
|||
})
|
||||
|
||||
eg.Go(func() error {
|
||||
if err := b.renderFeeds(buildCtx, b.site.PostIter(ctx)); err != nil {
|
||||
if err := b.renderFeeds(buildCtx, b.site.PostIter(ctx), feedOptions{
|
||||
targetNamePrefix: "/feed",
|
||||
titlePrefix: "",
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := b.renderFeeds(buildCtx, b.site.PostIter(ctx), feedOptions{
|
||||
targetNamePrefix: "/feeds/microblog-crosspost",
|
||||
titlePrefix: "Devlog: ",
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
|
@ -119,7 +129,7 @@ func (b *Builder) renderPostList(ctx buildContext, postIter iter.Seq[models.Mayb
|
|||
})
|
||||
}
|
||||
|
||||
func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*models.Post]]) error {
|
||||
func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*models.Post]], opts feedOptions) error {
|
||||
now := time.Now()
|
||||
feed := &feedhub.Feed{
|
||||
Title: b.site.Title,
|
||||
|
|
@ -141,9 +151,14 @@ func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*
|
|||
return err
|
||||
}
|
||||
|
||||
postTitle := post.Title
|
||||
if postTitle != "" {
|
||||
postTitle = opts.titlePrefix + postTitle
|
||||
}
|
||||
|
||||
feed.Items = append(feed.Items, &feedhub.Item{
|
||||
Id: filepath.Join(b.site.BaseURL, post.GUID),
|
||||
Title: post.Title,
|
||||
Title: postTitle,
|
||||
Link: &feedhub.Link{Href: renderedPost.PostURL},
|
||||
Content: string(renderedPost.HTML),
|
||||
// TO FIX: Created should be first published
|
||||
|
|
@ -157,7 +172,7 @@ func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*
|
|||
}
|
||||
}
|
||||
|
||||
if err := b.createAtPath(ctx, "/feed.xml", func(f io.Writer) error {
|
||||
if err := b.createAtPath(ctx, opts.targetNamePrefix+".xml", func(f io.Writer) error {
|
||||
rss, err := feed.ToRss()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to convert feed to RSS: %w", err)
|
||||
|
|
@ -168,7 +183,7 @@ func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*
|
|||
return err
|
||||
}
|
||||
|
||||
if err := b.createAtPath(ctx, "/feed.json", func(f io.Writer) error {
|
||||
if err := b.createAtPath(ctx, opts.targetNamePrefix+".json", func(f io.Writer) error {
|
||||
rss, err := feed.ToJSON()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to convert feed to JSON feed: %w", err)
|
||||
|
|
@ -276,7 +291,3 @@ func (b *Builder) writeUploads(ctx buildContext, uploads []models.Upload) error
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type buildContext struct {
|
||||
outDir string
|
||||
}
|
||||
|
|
|
|||
10
providers/sitebuilder/models.go
Normal file
10
providers/sitebuilder/models.go
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
package sitebuilder
|
||||
|
||||
type buildContext struct {
|
||||
outDir string
|
||||
}
|
||||
|
||||
type feedOptions struct {
|
||||
targetNamePrefix string
|
||||
titlePrefix string
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue