Skip to content

Commit

Permalink
Refactor merge.FS
Browse files Browse the repository at this point in the history
  • Loading branch information
deluan committed May 11, 2024
1 parent 5680941 commit 955a9b4
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
4 changes: 2 additions & 2 deletions resources/embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"sync"

"github.com/navidrome/navidrome/conf"
"github.com/navidrome/navidrome/utils"
"github.com/navidrome/navidrome/utils/merge"
)

var (
Expand All @@ -20,7 +20,7 @@ var (

func FS() fs.FS {
fsOnce.Do(func() {
fsys = utils.MergeFS{
fsys = merge.FS{
Base: embedFS,
Overlay: os.DirFS(path.Join(conf.Server.DataFolder, "resources")),
}
Expand Down
10 changes: 5 additions & 5 deletions utils/merge_fs.go → utils/merge/merge_fs.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package utils
package merge

import (
"errors"
Expand All @@ -7,15 +7,15 @@ import (
"sort"
)

// MergeFS implements a simple merged fs.FS, that can combine a Base FS with an Overlay FS. The semantics are:
// FS implements a simple merged fs.FS, that can combine a Base FS with an Overlay FS. The semantics are:
// - Files from the Overlay FS will override files with the same name in the Base FS
// - Directories are combined, with priority for the Overlay FS over the Base FS for files with matching names
type MergeFS struct {
type FS struct {
Base fs.FS
Overlay fs.FS
}

func (m MergeFS) Open(name string) (fs.File, error) {
func (m FS) Open(name string) (fs.File, error) {
file, err := m.Overlay.Open(name)
if err != nil {
return m.Base.Open(name)
Expand Down Expand Up @@ -43,7 +43,7 @@ func (m MergeFS) Open(name string) (fs.File, error) {
return m.mergeDirs(name, info, baseDirFile, overlayDirFile)
}

func (m MergeFS) mergeDirs(name string, info fs.FileInfo, baseDir fs.ReadDirFile, overlayDir fs.ReadDirFile) (fs.File, error) {
func (m FS) mergeDirs(name string, info fs.FileInfo, baseDir fs.ReadDirFile, overlayDir fs.ReadDirFile) (fs.File, error) {
merged := map[string]fs.DirEntry{}

baseFiles, err := baseDir.ReadDir(-1)
Expand Down
8 changes: 4 additions & 4 deletions utils/merge_fs_test.go → utils/merge/merge_fs_test.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package utils_test
package merge_test

import (
"io"
"io/fs"
"os"
"path/filepath"

"github.com/navidrome/navidrome/utils"
"github.com/navidrome/navidrome/utils/merge"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

var _ = Describe("MergeFS", func() {
var _ = Describe("FS", func() {
var baseName, overlayName string
var mergedDir fs.FS

Expand All @@ -20,7 +20,7 @@ var _ = Describe("MergeFS", func() {
overlayName, _ = os.MkdirTemp("", "merge_fs_overlay_test")
baseDir := os.DirFS(baseName)
overlayDir := os.DirFS(overlayName)
mergedDir = utils.MergeFS{Base: baseDir, Overlay: overlayDir}
mergedDir = merge.FS{Base: baseDir, Overlay: overlayDir}
})
AfterEach(func() {
_ = os.RemoveAll(baseName)
Expand Down

0 comments on commit 955a9b4

Please sign in to comment.