2023-08-29 07:15:01 -05:00
|
|
|
package files
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"codeberg.org/danjones000/strip-beats/config"
|
2023-08-29 10:58:58 -05:00
|
|
|
"github.com/akrennmair/slice"
|
|
|
|
|
"io/fs"
|
2023-08-29 07:15:01 -05:00
|
|
|
"path/filepath"
|
|
|
|
|
)
|
|
|
|
|
|
2023-08-29 10:58:58 -05:00
|
|
|
func isValidFile(file string) bool {
|
|
|
|
|
exts := config.GetConfig().SourceExtensions
|
|
|
|
|
return slice.ReduceWithInitialValue(exts, false, func(acc bool, ext string) bool {
|
|
|
|
|
return acc || filepath.Ext(file) == "."+ext
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func filterToValidFiles(ret []string) []string {
|
|
|
|
|
return slice.Filter(ret, isValidFile)
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-29 07:15:01 -05:00
|
|
|
func GetCandidates() []string {
|
|
|
|
|
source := config.GetConfig().Source
|
2023-08-29 10:58:58 -05:00
|
|
|
recurse := config.GetConfig().Recurse
|
|
|
|
|
|
|
|
|
|
if !recurse {
|
|
|
|
|
ret, _ := filepath.Glob(filepath.Join(source, "*"))
|
|
|
|
|
return filterToValidFiles(ret)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret := []string{}
|
|
|
|
|
filepath.WalkDir(source, func(file string, info fs.DirEntry, err error) error {
|
|
|
|
|
if info.IsDir() && err != nil {
|
|
|
|
|
return fs.SkipDir
|
|
|
|
|
}
|
|
|
|
|
if info.IsDir() {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if isValidFile(file) {
|
|
|
|
|
ret = append(ret, file)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
})
|
2023-08-29 07:15:01 -05:00
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
}
|