From 37dabe7476a9ed35a95d42ae32e3064fccbbea2d Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Wed, 17 Apr 2024 19:52:20 +0200 Subject: config: convert base_url to a URL type --- cmd/build/build.go | 4 ++-- internal/config/config.go | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/build/build.go b/cmd/build/build.go index ecc40a8..a8ce710 100644 --- a/cmd/build/build.go +++ b/cmd/build/build.go @@ -334,7 +334,7 @@ func renderFeed(title string, config Config, posts []Post, specific string) (io. doc, err := xmlquery.Parse(reader) feed := doc.SelectElement("feed") feed.SelectElement("title").FirstChild.Data = title - feed.SelectElement("link").SetAttr("href", config.BaseURL) + feed.SelectElement("link").SetAttr("href", config.BaseURL.String()) feed.SelectElement("id").FirstChild.Data = MakeTagURI(config, specific) datetime, err := posts[0].Date.UTC().MarshalText() feed.SelectElement("updated").FirstChild.Data = string(datetime) @@ -342,7 +342,7 @@ func renderFeed(title string, config Config, posts []Post, specific string) (io. xmlquery.RemoveFromTree(tpl) for _, post := range posts { - fullURL, err := url.JoinPath(config.BaseURL, post.URL) + fullURL, err := url.JoinPath(config.BaseURL.String(), post.URL) if err != nil { return nil, err } diff --git a/internal/config/config.go b/internal/config/config.go index 20fe21e..cab5f90 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -3,6 +3,7 @@ package config import ( "io/fs" "log/slog" + "net/url" "github.com/BurntSushi/toml" "github.com/pkg/errors" @@ -18,9 +19,18 @@ type MenuItem struct { URL string `toml:"url"` } +type URL struct { + *url.URL +} + +func (u *URL) UnmarshalText(text []byte) (err error) { + u.URL, err = url.Parse(string(text)) + return err +} + type Config struct { DefaultLanguage string `toml:"default_language"` - BaseURL string `toml:"base_url"` + BaseURL URL `toml:"base_url"` RedirectOtherHostnames bool `toml:"redirect_other_hostnames"` Title string Email string -- cgit 1.4.1