diff options
Diffstat (limited to 'core/core.go')
| -rw-r--r-- | core/core.go | 54 |
1 files changed, 41 insertions, 13 deletions
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 |
