1
0
Fork 0
mirror of https://github.com/vbatts/sl-feeds.git synced 2024-11-26 01:15:40 +00:00
sl-feeds/changelog/feeds.go
Vincent Batts 8e97e3d16f
changelog: a slackware ChangeLog parser
and ability to export to feeds

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2017-01-26 14:11:26 -05:00

51 lines
1.2 KiB
Go

package changelog
import (
"fmt"
"time"
"github.com/gorilla/feeds"
)
// ToFeed produces a github.com/gorilla/feeds.Feed that can be written to Atom or Rss
func ToFeed(link string, entries []Entry) (*feeds.Feed, error) {
var newestEntryTime time.Time
var oldestEntryTime time.Time
for _, e := range entries {
if e.Date.After(newestEntryTime) {
newestEntryTime = e.Date
}
if e.Date.Before(oldestEntryTime) {
oldestEntryTime = e.Date
}
}
feed := &feeds.Feed{
Title: "",
Link: &feeds.Link{Href: link},
Description: "Generated ChangeLog.txt feeds by sl-feeds (github.com/vbatts/sl-feeds)",
Created: oldestEntryTime,
Updated: newestEntryTime,
}
feed.Items = make([]*feeds.Item, len(entries))
for i, e := range entries {
feed.Items[i] = &feeds.Item{
Created: e.Date,
Link: &feeds.Link{Href: ""},
Description: e.ToChangeLog(),
}
updateWord := "updates"
if len(e.Updates) == 1 {
updateWord = "update"
}
if e.SecurityFix() {
feed.Items[i].Title = fmt.Sprintf("%d %s. Including a %s!", len(e.Updates), updateWord, securityFixStr)
} else {
feed.Items[i].Title = fmt.Sprintf("%d %s.", len(e.Updates), updateWord)
}
}
return feed, nil
}