// Package cache implements the Fs cachepackage cacheimport ( "github.com/rclone/rclone/fs" "github.com/rclone/rclone/lib/cache")var ( c = cache.New())// GetFn gets a fs.Fs named fsString either from the cache or creates// it afresh with the create functionfunc GetFn(fsString string, create func(fsString string) (fs.Fs, error)) (f fs.Fs, err error) { value, err := c.Get(fsString, func(fsString string) (f interface{}, ok bool, err error) { f, err = create(fsString) ok = err == nil || err == fs.ErrorIsFile return f, ok, err }) if err != nil && err != fs.ErrorIsFile { return nil, err } return value.(fs.Fs), err}// Get gets a fs.Fs named fsString either from the cache or creates it afreshfunc Get(fsString string) (f fs.Fs, err error) { return GetFn(fsString, fs.NewFs)}// Put puts an fs.Fs named fsString into the cachefunc Put(fsString string, f fs.Fs) { c.Put(fsString, f)}// Clear removes everything from the cahcefunc Clear() { c.Clear()}
// Package cache implements the Fs cache
package cache
import (
"github.com/rclone/rclone/fs"
"github.com/rclone/rclone/lib/cache"
)
var (
c = cache.New()
)
// GetFn gets a fs.Fs named fsString either from the cache or creates
// it afresh with the create function
func GetFn(fsString string, create func(fsString string) (fs.Fs, error)) (f fs.Fs, err error) {
value, err := c.Get(fsString, func(fsString string) (f interface{}, ok bool, err error) {
f, err = create(fsString)
ok = err == nil || err == fs.ErrorIsFile
return f, ok, err
})
if err != nil && err != fs.ErrorIsFile {
return nil, err
}
return value.(fs.Fs), err
}
// Get gets a fs.Fs named fsString either from the cache or creates it afresh
func Get(fsString string) (f fs.Fs, err error) {
return GetFn(fsString, fs.NewFs)
}
// Put puts an fs.Fs named fsString into the cache
func Put(fsString string, f fs.Fs) {
c.Put(fsString, f)
}
// Clear removes everything from the cahce
func Clear() {
c.Clear()
}