diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/core.go | 20 | ||||
| -rw-r--r-- | core/entries.go | 50 |
2 files changed, 46 insertions, 24 deletions
diff --git a/core/core.go b/core/core.go index 0500771..afa20d0 100644 --- a/core/core.go +++ b/core/core.go @@ -81,23 +81,3 @@ func (d *FullData) WriteJSON(dataPath string) error { err = os.Rename(path, filepath.Join(dataPath, "comitium.json")) return err } - -func (d *FullData) Export(w io.Writer) { - fmt.Fprint(w, "# comitium subscribed feeds\n## Feeds\n\n") - d.FeedsMu.RLock() - for _, v := range d.Feeds { - fmt.Fprintf(w, "=> %v %v\n", v.FeedLink, v.Title) - } - d.FeedsMu.RUnlock() - - fmt.Fprint(w, "\n\n## Pages\n\n") - d.PagesMu.RLock() - for _, v := range d.Pages { - fmt.Fprintf(w, "=> %v", v.Link) - if v.Title != "" { - fmt.Fprintf(w, " %v", v.Title) - } - fmt.Fprint(w, "\n") - } - d.PagesMu.RUnlock() -} diff --git a/core/entries.go b/core/entries.go index fb9ab25..3db8294 100644 --- a/core/entries.go +++ b/core/entries.go @@ -74,12 +74,54 @@ func toLocalDay(t time.Time) time.Time { func (d *FullData) WriteSubs(dataPath string) error { path := filepath.Join(dataPath, "subscriptions.gmi.new") + rawPage := `# comitium subscribed feeds +## Feeds + +Gemini, Atom, RSS, and JSON feeds from all over. + +` + d.FeedsMu.RLock() + for _, v := range d.Feeds { + rawPage += fmt.Sprintf("=> %v %v\n", v.FeedLink, v.Title) + } + d.FeedsMu.RUnlock() + + rawPage += ` + +## Pages + +Watching these pages for any changes that occur. + +` + d.PagesMu.RLock() + for _, v := range d.Pages { + rawPage += fmt.Sprintf("=> %v", v.Link) + if v.Title != "" { + rawPage += fmt.Sprintf(" %v", v.Title) + } + rawPage += "\n" + } + d.PagesMu.RUnlock() + + err := os.WriteFile(path, []byte(rawPage), 0666) + if err != nil { + return err + } + // if full write was successful then overwrite original + err = os.Rename(path, filepath.Join(dataPath, "subscriptions.gmi")) + return err +} + +func (d *FullData) WriteFeed(dataPath string) error { + path := filepath.Join(dataPath, "feed.gmi.new") + + rawPage := "# comitium subscriptions\n\n" + d.RLock() pe := d.getPageEntries() + rawPage += fmt.Sprintf("=> subscriptions.gmi Currently aggregating %d capsules, gopherholes, and websites.\n", len(d.Feeds)+len(d.Pages)) d.RUnlock() - rawPage := "# Subscriptions" - if len(pe.Entries) > 0 { curDay := toLocalDay(pe.Entries[0].Published) rawPage += fmt.Sprintf("\n\n## %s\n\n", curDay.Format("2006-01-02")) @@ -88,7 +130,7 @@ func (d *FullData) WriteSubs(dataPath string) error { pub := toLocalDay(entry.Published) if pub.Before(curDay) { curDay = pub - rawPage += fmt.Sprintf("\n## %s\n\n", curDay.Format("2006-01-02")) + rawPage += fmt.Sprintf("\n\n## %s\n\n", curDay.Format("2006-01-02")) } if entry.Title == "" { @@ -104,6 +146,6 @@ func (d *FullData) WriteSubs(dataPath string) error { return err } // if full write was successful then overwrite original - err = os.Rename(path, filepath.Join(dataPath, "subscriptions.gmi")) + err = os.Rename(path, filepath.Join(dataPath, "feed.gmi")) return err } |
