From 0ef988a318125028b4b23f6a0e57f73cc6c76705 Mon Sep 17 00:00:00 2001 From: Silvan Jegen Date: Tue, 13 Oct 2015 21:04:51 +0200 Subject: [PATCH 1/2] Use filepath.Walk instead of rolling our own func --- utils/bleve_index/main.go | 52 +++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/utils/bleve_index/main.go b/utils/bleve_index/main.go index 1d9a922b..d15dfd3d 100644 --- a/utils/bleve_index/main.go +++ b/utils/bleve_index/main.go @@ -20,9 +20,12 @@ 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") + rv chan file +) func main() { @@ -72,12 +75,12 @@ type file struct { } func handleArgs(args []string) chan file { - rv := make(chan file) + rv = make(chan file) go func() { for _, arg := range args { arg = filepath.Clean(arg) - handleArgRecursive(arg, rv) + filepath.Walk(arg, getallfiles) } close(rv) }() @@ -85,32 +88,23 @@ func handleArgs(args []string) chan file { return rv } -func handleArgRecursive(arg string, results chan file) { - stat, err := os.Stat(arg) +func getallfiles(path string, finfo os.FileInfo, err error) error { if err != nil { log.Print(err) - return + return err } - if stat.IsDir() { - // open the directory - dirEntries, err := ioutil.ReadDir(arg) - 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, - } + 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 } From 9528e09b1c6cf9098b5828c80305a6b17c28c4c1 Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Fri, 16 Oct 2015 13:10:43 -0400 Subject: [PATCH 2/2] rearrange code to avoid global variable rv also check possible error returned by filepath.Walk --- utils/bleve_index/main.go | 55 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/utils/bleve_index/main.go b/utils/bleve_index/main.go index d15dfd3d..0feaa9a1 100644 --- a/utils/bleve_index/main.go +++ b/utils/bleve_index/main.go @@ -24,7 +24,6 @@ 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") - rv chan file ) func main() { @@ -75,36 +74,36 @@ type file struct { } func handleArgs(args []string) chan file { - rv = make(chan file) - - go func() { - for _, arg := range args { - arg = filepath.Clean(arg) - filepath.Walk(arg, getallfiles) - } - close(rv) - }() - + rv := make(chan file) + go getAllFiles(args, rv) return rv } -func getallfiles(path string, finfo os.FileInfo, err error) error { - if err != nil { - log.Print(err) - return err - } - if finfo.IsDir() { - return nil - } +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) + 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) + } } - rv <- file{ - filename: filepath.Base(path), - contents: bytes, - } - - return nil + close(rv) }