]> Cypherpunks.ru repositories - goredo.git/blobdiff - targets.go
Redundant @documentencoding
[goredo.git] / targets.go
index bc8edfd6d0b00669f1d48a8491034ddef151bda0..5d2342e884ea68f6ac537b85b4dda1b29fcf73c4 100644 (file)
@@ -1,6 +1,6 @@
 /*
 goredo -- djb's redo implementation on pure Go
-Copyright (C) 2020-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -54,6 +54,7 @@ func targetsCollect(root string, tgts map[string]struct{}) error {
                                        return err
                                }
                                redoFis, err := redoDir.Readdir(0)
+                               redoDir.Close()
                                if err != nil {
                                        return err
                                }
@@ -64,7 +65,6 @@ func targetsCollect(root string, tgts map[string]struct{}) error {
                                                tgts[name[:len(name)-len(DepSuffix)]] = struct{}{}
                                        }
                                }
-                               redoDir.Close()
                        } else {
                                if err = targetsCollect(pth, tgts); err != nil {
                                        return err
@@ -72,11 +72,11 @@ func targetsCollect(root string, tgts map[string]struct{}) error {
                        }
                }
        }
-       return dir.Close()
+       return nil
 }
 
 func targetsWalker(tgts []string) ([]string, error) {
-       tgtsMap := make(map[string]struct{}, 0)
+       tgtsMap := map[string]struct{}{}
        for _, tgt := range tgts {
                if err := targetsCollect(tgt, tgtsMap); err != nil {
                        return nil, err
@@ -88,3 +88,14 @@ func targetsWalker(tgts []string) ([]string, error) {
        }
        return tgts, nil
 }
+
+func collectWholeDeps(
+       tgts map[string]struct{},
+       deps map[string]map[string]struct{},
+       seen map[string]struct{},
+) {
+       for tgt := range tgts {
+               seen[tgt] = struct{}{}
+               collectWholeDeps(deps[tgt], deps, seen)
+       }
+}