mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-04 19:29:49 -06:00
38 lines
819 B
Go
38 lines
819 B
Go
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},
|
|
}
|
|
}
|