twitch-bot/internal/apimodules/overlays/fsstack.go
Knut Ahlers c78356f68f
Lint: Update linter config, improve code quality
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2024-01-01 17:52:39 +01:00

39 lines
756 B
Go

package overlays
import (
"io/fs"
"net/http"
"path"
)
// Compile-time assertion
var _ http.FileSystem = httpFSStack{}
type httpFSStack []http.FileSystem
func (h httpFSStack) Open(name string) (http.File, error) {
for _, stackedFS := range h {
if f, err := stackedFS.Open(name); err == nil {
return f, nil
}
}
return nil, fs.ErrNotExist
}
// Compile-time assertion
var _ http.FileSystem = prefixedFS{}
type prefixedFS struct {
originFS http.FileSystem
prefix string
}
func newPrefixedFS(prefix string, originFS http.FileSystem) *prefixedFS {
return &prefixedFS{originFS: originFS, prefix: prefix}
}
func (p prefixedFS) Open(name string) (http.File, error) {
return p.originFS.Open(path.Join(p.prefix, name)) //nolint:wrapcheck
}