diff --git a/core/core.go b/core/core.go index 803d69e..21487f6 100644 --- a/core/core.go +++ b/core/core.go @@ -30,9 +30,12 @@ var Data = FullData{ // Maps are created in init() } -// the Header of feeds.gmi. +// the Header and Footer of feeds.gmi. // set in Init, either to the contents of header.gmi or to the default string -var Header string +var ( + Header string + Footer string +) // Timeout for requests var Timeout int @@ -74,30 +77,55 @@ func Init(dataPath string, localizer *localizations.Localizer) error { Data.Pages = make(map[string]*Page) } - // initialize header.gmi - f, err = os.Open(filepath.Join(dataPath, "header.gmi")) + // initialize header.gmi and footer.gmi + Header, err = getHeaderFooter( + dataPath, "header.gmi", + TranslateString("# %s\n\n", "files.feed_default_header", nil), "", + ) + if err != nil { + return err + } + footer, err := getHeaderFooter( + dataPath, "footer.gmi", "---\n\n", + TranslateString( + "=> https://git.nytpu.com/comitium/about/ %s\n", + "files.comitium_footer", + &localizations.Replacements{"version": Version, "commit": Commit}, + ), + ) + if err != nil { + return err + } + Footer = fmt.Sprintf("\n\n%s", footer) + + Timeout = 10 + + return nil +} + +// gets a header or footer from a datapath, or uses a default. extraString is a +// string to append no matter what +func getHeaderFooter(dataPath, filename, defaultString, extraString string) (main string, err error) { + f, err := os.Open(filepath.Join(dataPath, filename)) if err == nil { fi, err := f.Stat() if err == nil && fi.Size() > 0 { headerBytes, err := ioutil.ReadAll(f) f.Close() if err != nil { - return fmt.Errorf(localizer.Get("errors.read_file_error", &localizations.Replacements{"file": "header.gmi", "error": err})) + return "", fmt.Errorf(Localizer.Get("errors.read_file_error", &localizations.Replacements{"file": "header.gmi", "error": err})) } - Header = string(headerBytes) + main = string(headerBytes) } f.Close() } else if !os.IsNotExist(err) { - return fmt.Errorf(localizer.Get("errors.read_file_error", &localizations.Replacements{"file": "header.gmi", "error": err})) + return "", fmt.Errorf(Localizer.Get("errors.read_file_error", &localizations.Replacements{"file": "header.gmi", "error": err})) } - if Header == "" { - Header = TranslateString("# %s\n\n", "files.feed_default_header", nil) + if main == "" { + main = defaultString } - - Timeout = 10 - - return nil + return main + extraString, nil } // WriteJSON writes a FullData to disk diff --git a/core/entries.go b/core/entries.go index 681a10f..3097094 100644 --- a/core/entries.go +++ b/core/entries.go @@ -79,11 +79,6 @@ func genDay() string { return TranslateString("%s\n", "files.generated_on", &localizations.Replacements{"date": time.Now().Format("2006-01-02 at 15:04 MST")}) } -// agplCompliance returns a string containing a footer linking to the source code -func agplCompilance() string { - return TranslateString("\n\n---\n\n=> https://git.nytpu.com/comitium/about/ %s\n", "files.comitium_footer", &localizations.Replacements{"version": Version, "commit": Commit}) -} - func (d *FullData) WriteSubs(dataPath string) error { path := filepath.Join(dataPath, "subscriptions.gmi.new") @@ -115,7 +110,7 @@ func (d *FullData) WriteSubs(dataPath string) error { } d.PagesMu.RUnlock() - rawPage += agplCompilance() + rawPage += Footer err := ioutil.WriteFile(path, []byte(rawPage), 0666) if err != nil { @@ -156,7 +151,7 @@ func (d *FullData) WriteFeed(dataPath string) error { } } - rawPage += agplCompilance() + rawPage += Footer err := ioutil.WriteFile(path, []byte(rawPage), 0666) if err != nil { return err