make filter Match on info instead of 9001 args
This commit is contained in:
parent
20f6dc92bc
commit
15bd040deb
|
@ -125,7 +125,7 @@ func walk_dir(dir string, f *filter.Filter) (files Files) {
|
||||||
|
|
||||||
name := d.Name()
|
name := d.Name()
|
||||||
info, _ := d.Info()
|
info, _ := d.Info()
|
||||||
if f.Match(name, info.ModTime(), info.Size(), info.IsDir()) {
|
if f.Match(info) {
|
||||||
log.Debugf("found matching file: %s %s", name, info.ModTime())
|
log.Debugf("found matching file: %s %s", name, info.ModTime())
|
||||||
i, err := os.Stat(p)
|
i, err := os.Stat(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -170,7 +170,7 @@ func read_dir(dir string, f *filter.Filter) (files Files) {
|
||||||
|
|
||||||
path := filepath.Dir(filepath.Join(dir, name))
|
path := filepath.Dir(filepath.Join(dir, name))
|
||||||
|
|
||||||
if f.Match(name, info.ModTime(), info.Size(), info.IsDir()) {
|
if f.Match(info) {
|
||||||
log.Debugf("found matching file: %s %s", name, info.ModTime())
|
log.Debugf("found matching file: %s %s", name, info.ModTime())
|
||||||
files = append(files, DiskFile{
|
files = append(files, DiskFile{
|
||||||
name: name,
|
name: name,
|
||||||
|
|
|
@ -95,7 +95,7 @@ func FindTrash(trashdir, ogdir string, f *filter.Filter) (files Files, outerr er
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if f.Match(filename, date, info.Size(), info.IsDir()) {
|
if f.Match(info) {
|
||||||
log.Debugf("%s: deleted on %s", filename, date.Format(trash_info_date_fmt))
|
log.Debugf("%s: deleted on %s", filename, date.Format(trash_info_date_fmt))
|
||||||
files = append(files, TrashInfo{
|
files = append(files, TrashInfo{
|
||||||
name: filename,
|
name: filename,
|
||||||
|
|
|
@ -3,6 +3,7 @@ package filter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/fs"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"slices"
|
"slices"
|
||||||
|
@ -49,9 +50,11 @@ func (f *Filter) AddFileNames(filenames ...string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Filter) Match(filename string, modified time.Time, size int64, isdir bool) bool {
|
func (f *Filter) Match(info fs.FileInfo) bool {
|
||||||
// this might be unnessary but w/e
|
filename := info.Name()
|
||||||
filename = filepath.Clean(filename)
|
modified := info.ModTime()
|
||||||
|
isdir := info.IsDir()
|
||||||
|
size := info.Size()
|
||||||
|
|
||||||
// on or before/after, not both
|
// on or before/after, not both
|
||||||
if !f.on.IsZero() {
|
if !f.on.IsZero() {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package filter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/fs"
|
||||||
"math"
|
"math"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -47,8 +48,16 @@ type singletest struct {
|
||||||
isdir bool
|
isdir bool
|
||||||
modified time.Time
|
modified time.Time
|
||||||
size int64
|
size int64
|
||||||
|
mode fs.FileMode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s singletest) Name() string { return s.filename }
|
||||||
|
func (s singletest) Size() int64 { return s.size }
|
||||||
|
func (s singletest) Mode() fs.FileMode { return s.mode }
|
||||||
|
func (s singletest) ModTime() time.Time { return s.modified }
|
||||||
|
func (s singletest) IsDir() bool { return s.isdir }
|
||||||
|
func (s singletest) Sys() any { return nil }
|
||||||
|
|
||||||
func (s singletest) String() string {
|
func (s singletest) String() string {
|
||||||
return fmt.Sprintf("filename:'%s' modified:'%s' size:'%d' isdir:'%t'", s.filename, s.modified, s.size, s.isdir)
|
return fmt.Sprintf("filename:'%s' modified:'%s' size:'%d' isdir:'%t'", s.filename, s.modified, s.size, s.isdir)
|
||||||
}
|
}
|
||||||
|
@ -72,7 +81,7 @@ func testmatch(t *testing.T, testers []testholder) {
|
||||||
|
|
||||||
for _, tst := range tester.good {
|
for _, tst := range tester.good {
|
||||||
t.Run(fmt.Sprintf(testnamefmt+"_good", tst.filename, tst.modified), func(t *testing.T) {
|
t.Run(fmt.Sprintf(testnamefmt+"_good", tst.filename, tst.modified), func(t *testing.T) {
|
||||||
if !f.Match(tst.filename, tst.modified, tst.size, tst.isdir) {
|
if !f.Match(tst) {
|
||||||
t.Fatalf("(%s) didn't match (%s) but should have", tst, tester)
|
t.Fatalf("(%s) didn't match (%s) but should have", tst, tester)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -80,7 +89,7 @@ func testmatch(t *testing.T, testers []testholder) {
|
||||||
|
|
||||||
for _, tst := range tester.bad {
|
for _, tst := range tester.bad {
|
||||||
t.Run(fmt.Sprintf(testnamefmt+"_bad", tst.filename, tst.modified), func(t *testing.T) {
|
t.Run(fmt.Sprintf(testnamefmt+"_bad", tst.filename, tst.modified), func(t *testing.T) {
|
||||||
if f.Match(tst.filename, tst.modified, tst.size, tst.isdir) {
|
if f.Match(tst) {
|
||||||
t.Fatalf("(%s) matched (%s) but shouldn't have", tst, tester)
|
t.Fatalf("(%s) matched (%s) but shouldn't have", tst, tester)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue