35 lines
638 B
Go
35 lines
638 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func findFiles(config Config) ([]string, error) {
|
|
var musicFiles []string
|
|
|
|
walkFunc := func(path string, info os.FileInfo, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if info.IsDir() && path != config.SourceDir && !config.Recursion {
|
|
return filepath.SkipDir
|
|
}
|
|
|
|
ext := strings.ToLower(filepath.Ext(path))
|
|
if ext == ".mp3" || ext == ".m4a" || ext == ".flac" || ext == ".wav" {
|
|
musicFiles = append(musicFiles, path)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
if err := filepath.Walk(config.SourceDir, walkFunc); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return musicFiles, nil
|
|
}
|