diff --git a/convids/logic.go b/convids/logic.go index 2909c1c..3dbc7b6 100644 --- a/convids/logic.go +++ b/convids/logic.go @@ -1,6 +1,7 @@ package convids import ( + "errors" "fmt" "io" "os" @@ -48,6 +49,7 @@ func WalkFiles(d *Data, stopOnError bool, gp GroupPrinter, cb ShowWalker) (err e } for s := range d.AllShows(gp) { var found bool + start: for _, file := range files { if file.IsDir() { continue @@ -59,13 +61,27 @@ func WalkFiles(d *Data, stopOnError bool, gp GroupPrinter, cb ShowWalker) (err e if err != nil { return } - if found { - err = cb(s, fp.Join(d.Config.Source, file.Name())) - if err != nil && stopOnError { - return - } - break + if !found { + continue } + + path := fp.Join(d.Config.Source, file.Name()) + for _, ext := range d.Config.Skip { + if !strings.HasPrefix(ext, ".") { + ext = "." + ext + } + skipper := path + ext + _, err := os.Stat(skipper) + if !errors.Is(err, os.ErrNotExist) { + break start + } + } + + err = cb(s, path) + if err != nil && stopOnError { + return + } + break } } return nil diff --git a/convids/models.go b/convids/models.go index 55d0e64..b7ad695 100644 --- a/convids/models.go +++ b/convids/models.go @@ -11,6 +11,7 @@ type Config struct { Source string Extensions []string Groups []string + Skip []string extRe *regexp.Regexp }