Allow specifying multiple site URLs

This commit is contained in:
Adnan Maolood 2020-11-27 18:24:31 -05:00
parent 3c7ffaa095
commit 7760b5529e
4 changed files with 24 additions and 13 deletions

View file

@ -10,7 +10,7 @@ import (
// Config contains site configuration. // Config contains site configuration.
type Config struct { type Config struct {
Title string // site title Title string // site title
URL string // site URL URLs []string // site URLs
Feeds map[string]string // site feeds Feeds map[string]string // site feeds
Templates *Templates // site templates Templates *Templates // site templates
} }
@ -37,7 +37,7 @@ func (c *Config) Load(path string) error {
case "title": case "title":
c.Title = value c.Title = value
case "url": case "url":
c.URL = value c.URLs = append(c.URLs, value)
} }
case "feeds": case "feeds":
c.Feeds[key] = value c.Feeds[key] = value
@ -50,7 +50,7 @@ func (c *Config) LoadTemplates(path string) error {
// Site contains site metadata passed to templates // Site contains site metadata passed to templates
type Site struct { type Site struct {
Title string Title string
URL string URLs []string
} }
// Load templates // Load templates
@ -59,7 +59,7 @@ func (c *Config) LoadTemplates(path string) error {
"site": func() Site { "site": func() Site {
return Site{ return Site{
Title: c.Title, Title: c.Title,
URL: c.URL, URLs: c.URLs,
} }
}, },
}) })

View file

@ -164,7 +164,12 @@ The following keys are supported:
| title | title
: Site title : Site title
| url | url
: Site URL. Should not end with a trailing slash. : Site URL.
Site URLs are only used when generating Atom feeds.
Site URLs should not end with a trailing slash.
More than one site URL may be specified by specifying multiple url keys.
This allows a site that is hosted on both Gemini and HTTP to specify URLs for both locations.
The following sections are supported: The following sections are supported:

View file

@ -99,15 +99,18 @@ const output_html = `<!DOCTYPE html>
// Default atom feed template // Default atom feed template
const atom_xml = `<?xml version="1.0" encoding="utf-8"?> const atom_xml = `<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<id>{{ site.URL }}{{ .Path }}</id> <id>{{ index site.URLs 0 }}{{ .Path }}</id>
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<updated>{{ .Updated.Format "2006-01-02T15:04:05Z07:00" }}</updated> <updated>{{ .Updated.Format "2006-01-02T15:04:05Z07:00" }}</updated>
<link href="{{ site.URL }}{{ .Path }}" rel="alternate"> <link href="{{ index site.URLs 0 }}{{ .Path }}" rel="alternate">
{{ range .Entries }}<entry> {{ range .Entries }}<entry>
<id>{{ site.URL }}{{ .Path }}</id> <id>{{ index site.URLs 0 }}{{ .Path }}</id>
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}</updated> <updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}</updated>
<link href="{{ site.URL }}{{ .Path }}" rel="alternate"> {{- $path := .Path }}
{{- range site.URLs }}
<link href="{{ . }}{{ $path }}" rel="alternate">
{{- end }}
</entry> </entry>
{{ end -}} {{ end -}}
</feed>` </feed>`

View file

@ -1,14 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<id>{{ site.URL }}{{ .Path }}</id> <id>{{ index site.URLs 0 }}{{ .Path }}</id>
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<updated>{{ .Updated.Format "2006-01-02T15:04:05Z07:00" }}</updated> <updated>{{ .Updated.Format "2006-01-02T15:04:05Z07:00" }}</updated>
<link href="{{ site.URL }}{{ .Path }}" rel="alternate"> <link href="{{ index site.URLs 0 }}{{ .Path }}" rel="alternate">
{{ range .Entries }}<entry> {{ range .Entries }}<entry>
<id>{{ site.URL }}{{ .Path }}</id> <id>{{ index site.URLs 0 }}{{ .Path }}</id>
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}</updated> <updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}</updated>
<link href="{{ site.URL }}{{ .Path }}" rel="alternate"> {{- $path := .Path }}
{{- range site.URLs }}
<link href="{{ . }}{{ $path }}" rel="alternate">
{{- end }}
</entry> </entry>
{{ end -}} {{ end -}}
</feed> </feed>