summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornytpu <alex@nytpu.com>2021-05-19 07:39:15 -0600
committernytpu <alex@nytpu.com>2021-05-19 07:39:15 -0600
commit012eddbafe8b6f82d5a767baaa877d2e164ade67 (patch)
tree277c987b44bbfd5dcf1ea2b23c4a07833e2e59db
parentb5963fbe3a51ce3cf0caa87fbf26b29b4dcec812 (diff)
add custom footer
-rw-r--r--core/core.go54
-rw-r--r--core/entries.go9
2 files changed, 43 insertions, 20 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
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