]> Cypherpunks.ru repositories - goredo.git/blobdiff - main.go
Optimise redo-sources
[goredo.git] / main.go
diff --git a/main.go b/main.go
index 025ecbed5be4972146276c386d0fb14810de6975..c05d3c777e2247d8a2b4ad69ef73aed78b571d92 100644 (file)
--- a/main.go
+++ b/main.go
@@ -499,11 +499,23 @@ CmdSwitch:
                        }
                }
                sort.Strings(tgts)
-               var srcs []string
-               srcs, err = sourcesWalker(tgts)
-               err = ErrLine(err)
-               sort.Strings(srcs)
-               for _, src := range srcs {
+               seen := make(map[string]struct{})
+               seenDeps := make(map[string]struct{})
+               srcs := make(map[string]struct{})
+               err = ErrLine(sourcesWalker(tgts, seen, seenDeps, srcs))
+               seen = nil
+               seenDeps = nil
+               if err != nil {
+                       break
+               }
+               seenDeps = nil
+               res := make([]string, 0, len(srcs))
+               for p := range srcs {
+                       res = append(res, p)
+               }
+               srcs = nil
+               sort.Strings(res)
+               for _, src := range res {
                        fmt.Println(src)
                }
        case CmdNameRedoDepFix: