Merge pull request #1973 from restic/announce-new-cache

cache: Print message when new cache is created
This commit is contained in:
Alexander Neumann 2018-09-02 13:00:55 +02:00
commit 16885529f7
3 changed files with 27 additions and 10 deletions

View File

@ -376,6 +376,10 @@ func OpenRepository(opts GlobalOptions) (*repository.Repository, error) {
return s, nil return s, nil
} }
if c.Created && !opts.JSON {
Verbosef("created new cache in %v\n", c.Base)
}
// start using the cache // start using the cache
s.UseCache(c) s.UseCache(c)

View File

@ -19,6 +19,7 @@ import (
type Cache struct { type Cache struct {
Path string Path string
Base string Base string
Created bool
PerformReadahead func(restic.Handle) bool PerformReadahead func(restic.Handle) bool
} }
@ -98,7 +99,7 @@ func New(id string, basedir string) (c *Cache, err error) {
} }
} }
err = mkdirCacheDir(basedir) created, err := mkdirCacheDir(basedir)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -121,8 +122,13 @@ func New(id string, basedir string) (c *Cache, err error) {
} }
// create the repo cache dir if it does not exist yet // create the repo cache dir if it does not exist yet
if err = fs.MkdirAll(cachedir, dirMode); err != nil { _, err = fs.Lstat(cachedir)
return nil, err if os.IsNotExist(err) {
err = fs.MkdirAll(cachedir, dirMode)
if err != nil {
return nil, err
}
created = true
} }
// update the timestamp so that we can detect old cache dirs // update the timestamp so that we can detect old cache dirs
@ -145,8 +151,9 @@ func New(id string, basedir string) (c *Cache, err error) {
} }
c = &Cache{ c = &Cache{
Path: cachedir, Path: cachedir,
Base: basedir, Base: basedir,
Created: created,
PerformReadahead: func(restic.Handle) bool { PerformReadahead: func(restic.Handle) bool {
// do not perform readahead by default // do not perform readahead by default
return false return false

16
internal/cache/dir.go vendored
View File

@ -68,25 +68,31 @@ func DefaultDir() (cachedir string, err error) {
return cachedir, nil return cachedir, nil
} }
func mkdirCacheDir(cachedir string) error { // mkdirCacheDir ensures that the cache directory exists. It it didn't, created
// is set to true.
func mkdirCacheDir(cachedir string) (created bool, err error) {
var newCacheDir bool
fi, err := fs.Stat(cachedir) fi, err := fs.Stat(cachedir)
if os.IsNotExist(errors.Cause(err)) { if os.IsNotExist(errors.Cause(err)) {
err = fs.MkdirAll(cachedir, 0700) err = fs.MkdirAll(cachedir, 0700)
if err != nil { if err != nil {
return errors.Wrap(err, "MkdirAll") return true, errors.Wrap(err, "MkdirAll")
} }
fi, err = fs.Stat(cachedir) fi, err = fs.Stat(cachedir)
debug.Log("create cache dir %v", cachedir) debug.Log("create cache dir %v", cachedir)
newCacheDir = true
} }
if err != nil { if err != nil {
return errors.Wrap(err, "Stat") return newCacheDir, errors.Wrap(err, "Stat")
} }
if !fi.IsDir() { if !fi.IsDir() {
return errors.Errorf("cache dir %v is not a directory", cachedir) return newCacheDir, errors.Errorf("cache dir %v is not a directory", cachedir)
} }
return nil return newCacheDir, nil
} }