]> Cypherpunks.ru repositories - goredo.git/blobdiff - run.go
Optimise reading of only Build metainformation
[goredo.git] / run.go
diff --git a/run.go b/run.go
index dd41fbcc01927463f327d043321f828e22a9637f..6bd7029752d8fac0d13c6bb1a26e95c67c208953 100644 (file)
--- a/run.go
+++ b/run.go
@@ -256,20 +256,14 @@ func runScript(tgtOrig string, errs chan error, forced, traced bool) error {
                                        log.Fatal(err)
                                }
                        }
-                       var depInfo *DepInfo
-                       fdDep, err := os.Open(path.Join(redoDir, tgt+DepSuffix))
+                       build, err := depReadBuild(path.Join(redoDir, tgt+DepSuffix))
                        if err != nil {
                                if errors.Is(err, fs.ErrNotExist) {
                                        err = errors.New("was not built: no .rec")
                                }
                                goto Finish
                        }
-                       defer fdDep.Close()
-                       depInfo, err = depRead(fdDep)
-                       if err != nil {
-                               goto Finish
-                       }
-                       if depInfo.build != BuildUUID {
+                       if build != BuildUUID {
                                err = errors.New("was not built: build differs")
                        }
                Finish:
@@ -284,14 +278,10 @@ func runScript(tgtOrig string, errs chan error, forced, traced bool) error {
 
        // Check if it was already built in parallel
        if !forced {
-               if fdDep, err := os.Open(path.Join(redoDir, tgt+DepSuffix)); err == nil {
-                       depInfo, err := depRead(fdDep)
-                       fdDep.Close()
-                       if err == nil && depInfo.build == BuildUUID {
-                               lockRelease()
-                               errs <- nil
-                               return nil
-                       }
+               if build, err := depReadBuild(path.Join(redoDir, tgt+DepSuffix)); err == nil && build == BuildUUID {
+                       lockRelease()
+                       errs <- nil
+                       return nil
                }
        }