diff --git a/utils/bleve_index/main.go b/utils/bleve_index/main.go index 1d9a922b..0feaa9a1 100644 --- a/utils/bleve_index/main.go +++ b/utils/bleve_index/main.go @@ -20,9 +20,11 @@ import ( _ "github.com/blevesearch/bleve/config" ) -var indexPath = flag.String("index", "", "index path") -var keepExt = flag.Bool("keepExt", false, "keep extension in doc id") -var keepDir = flag.Bool("keepDir", false, "keep dir in doc id") +var ( + indexPath = flag.String("index", "", "index path") + keepExt = flag.Bool("keepExt", false, "keep extension in doc id") + keepDir = flag.Bool("keepDir", false, "keep dir in doc id") +) func main() { @@ -73,44 +75,35 @@ type file struct { func handleArgs(args []string) chan file { rv := make(chan file) - - go func() { - for _, arg := range args { - arg = filepath.Clean(arg) - handleArgRecursive(arg, rv) - } - close(rv) - }() - + go getAllFiles(args, rv) return rv } -func handleArgRecursive(arg string, results chan file) { - stat, err := os.Stat(arg) - if err != nil { - log.Print(err) - return - } - if stat.IsDir() { - // open the directory - dirEntries, err := ioutil.ReadDir(arg) +func getAllFiles(args []string, rv chan file) { + for _, arg := range args { + arg = filepath.Clean(arg) + err := filepath.Walk(arg, func(path string, finfo os.FileInfo, err error) error { + if err != nil { + log.Print(err) + return err + } + if finfo.IsDir() { + return nil + } + + bytes, err := ioutil.ReadFile(path) + if err != nil { + log.Fatal(err) + } + rv <- file{ + filename: filepath.Base(path), + contents: bytes, + } + return nil + }) if err != nil { log.Fatal(err) } - - // walk the directory entries - for _, dirEntry := range dirEntries { - handleArgRecursive(arg+string(os.PathSeparator)+dirEntry.Name(), results) - } - } else { - bytes, err := ioutil.ReadFile(arg) - if err != nil { - log.Fatal(err) - } - - results <- file{ - filename: arg, - contents: bytes, - } } + close(rv) }