Initial QSfera import
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package fsx
|
||||
|
||||
import (
|
||||
"github.com/spf13/afero"
|
||||
)
|
||||
|
||||
var (
|
||||
// assert interfaces implemented
|
||||
_ afero.Fs = (*FallbackFS)(nil)
|
||||
_ FS = (*FallbackFS)(nil)
|
||||
)
|
||||
|
||||
// FallbackFS is a filesystem that layers a primary filesystem on top of a secondary filesystem.
|
||||
type FallbackFS struct {
|
||||
FS
|
||||
primary *BaseFS
|
||||
secondary *BaseFS
|
||||
}
|
||||
|
||||
// Primary returns the primary filesystem.
|
||||
func (d *FallbackFS) Primary() *BaseFS {
|
||||
return d.primary
|
||||
}
|
||||
|
||||
// Secondary returns the secondary filesystem.
|
||||
func (d *FallbackFS) Secondary() *BaseFS {
|
||||
return d.secondary
|
||||
}
|
||||
|
||||
// NewFallbackFS returns a new FallbackFS instance.
|
||||
func NewFallbackFS(primary, secondary FS) *FallbackFS {
|
||||
return &FallbackFS{
|
||||
FS: FromAfero(afero.NewCopyOnWriteFs(secondary, primary)),
|
||||
primary: &BaseFS{Fs: primary},
|
||||
secondary: &BaseFS{Fs: secondary},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user