diff --git a/resources/banner.go b/resources/banner.go index 52f3fcd1..0f7f1a54 100644 --- a/resources/banner.go +++ b/resources/banner.go @@ -2,6 +2,7 @@ package resources import ( "fmt" + "io" "strings" "unicode" @@ -9,7 +10,11 @@ import ( ) func loadBanner() string { - data, _ := Asset("banner.txt") + f, err := embedFS.Open("banner.txt") + if err != nil { + return "" + } + data, _ := io.ReadAll(f) return strings.TrimRightFunc(string(data), unicode.IsSpace) } diff --git a/resources/embed.go b/resources/embed.go index 860e3130..5c476e87 100644 --- a/resources/embed.go +++ b/resources/embed.go @@ -2,10 +2,10 @@ package resources import ( "embed" - "io" "io/fs" "os" "path" + "sync" "github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/utils" @@ -13,20 +13,17 @@ import ( var ( //go:embed * - fsys embed.FS + embedFS embed.FS + fsOnce sync.Once + fsys fs.FS ) func FS() fs.FS { - return utils.MergeFS{ - Base: fsys, - Overlay: os.DirFS(path.Join(conf.Server.DataFolder, "resources")), - } -} - -func Asset(path string) ([]byte, error) { - f, err := FS().Open(path) - if err != nil { - return nil, err - } - return io.ReadAll(f) + fsOnce.Do(func() { + fsys = utils.MergeFS{ + Base: embedFS, + Overlay: os.DirFS(path.Join(conf.Server.DataFolder, "resources")), + } + }) + return fsys }