This commit renames the 'wisski' package to 'dis' and prepares the snapshots component for restructuring.
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package dis
|
|
|
|
import (
|
|
"path/filepath"
|
|
"time"
|
|
|
|
"github.com/tkw1536/goprogram/stream"
|
|
)
|
|
|
|
// ShouldPrune determines if a file with the provided modtime
|
|
func (dis *Distillery) ShouldPrune(modtime time.Time) bool {
|
|
return time.Since(modtime) > time.Duration(dis.Config.MaxBackupAge)*24*time.Hour
|
|
}
|
|
|
|
// PruneBackups prunes all backups older than the maximum backup age
|
|
func (dis *Distillery) PruneBackups(io stream.IOStream) error {
|
|
sPath := dis.SnapshotManager().ArchivePath()
|
|
|
|
// list all the files
|
|
entries, err := dis.Core.Environment.ReadDir(sPath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, entry := range entries {
|
|
// skip directories
|
|
if entry.IsDir() {
|
|
continue
|
|
}
|
|
|
|
// grab info about the file
|
|
info, err := entry.Info()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// check if it should be pruned!
|
|
if !dis.ShouldPrune(info.ModTime()) {
|
|
continue
|
|
}
|
|
|
|
// assemble path, and then remove the file!
|
|
path := filepath.Join(sPath, entry.Name())
|
|
io.Printf("Removing %s cause it is older than %d days", path, dis.Config.MaxBackupAge)
|
|
|
|
if err := dis.Core.Environment.Remove(path); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|