Added NewOsFsBallback.
- Creates a new OS file system with a fallback on an afero.Fs. Exposed the file system used as source for the CopyDir.
This commit is contained in:
parent
2985b28851
commit
d7e3dfdb0f
@ -9,7 +9,9 @@ import (
|
||||
"github.com/spf13/afero"
|
||||
)
|
||||
|
||||
// CopyDir represents a directory that is mimicked on hard drive.
|
||||
type CopyDir interface {
|
||||
Fs() afero.Fs
|
||||
Retrieve(name string) (string, error)
|
||||
Path(name string) string
|
||||
Open(name string) (*os.File, error)
|
||||
@ -31,6 +33,8 @@ func NewCopyDir(fs afero.Fs) (CopyDir, error) {
|
||||
return ©Dir{fs, dir}, nil
|
||||
}
|
||||
|
||||
func (d *copyDir) Fs() afero.Fs { return d.fs }
|
||||
|
||||
func (d *copyDir) Retrieve(name string) (string, error) {
|
||||
var path = d.Path(name)
|
||||
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||
|
@ -20,6 +20,12 @@ func NewFallbackFs(source, backup afero.Fs) *FallbackFs {
|
||||
return &FallbackFs{source, backup}
|
||||
}
|
||||
|
||||
// NewOsFsFallback creates a new Fs based on the os package, restricts access on the supplied path and uses backup as fallback.
|
||||
func NewOsFsFallback(path string, backup afero.Fs) *FallbackFs {
|
||||
osFs := afero.NewOsFs()
|
||||
return NewFallbackFs(afero.NewBasePathFs(osFs, path), backup)
|
||||
}
|
||||
|
||||
func (f *FallbackFs) do(action func(afero.Fs) error) error {
|
||||
err := action(f.source)
|
||||
if err == nil {
|
||||
|
Loading…
Reference in New Issue
Block a user