Create resources.FS only once

This commit is contained in:
Deluan 2024-02-03 12:05:03 -05:00
parent 79a4d8f6ad
commit 6226741517
2 changed files with 17 additions and 15 deletions

View File

@ -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)
}

View File

@ -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
}