]> Cypherpunks.ru repositories - goredo.git/blobdiff - main.go
Remove excess stat call
[goredo.git] / main.go
diff --git a/main.go b/main.go
index b54baadb1fe7e376d7e68eed57112d461e83e969..025ecbed5be4972146276c386d0fb14810de6975 100644 (file)
--- a/main.go
+++ b/main.go
@@ -148,10 +148,7 @@ func main() {
        if TopDir == "" {
                TopDir = "/"
        } else {
-               TopDir, err = filepath.Abs(TopDir)
-               if err != nil {
-                       panic(err)
-               }
+               TopDir = mustAbs(TopDir)
        }
        DirPrefix = os.Getenv(EnvDirPrefix)
        DepCwd = os.Getenv(EnvDepCwd)
@@ -353,6 +350,7 @@ CmdSwitch:
                                path.Join(Cwd, tgt),
                        )
                        if err != nil {
+                               err = ErrLine(err)
                                break
                        }
                        err = ifcreate(fdDep, tgtRel)
@@ -392,18 +390,22 @@ CmdSwitch:
                var fdTmp *os.File
                fdTmp, err = os.CreateTemp("", "whichdo")
                if err != nil {
+                       err = ErrLine(err)
                        break
                }
                if err = os.Remove(fdTmp.Name()); err != nil {
+                       err = ErrLine(err)
                        break
                }
                cwd, tgt := cwdAndTgt(tgts[0])
                doFile, upLevels, err := findDo(fdTmp, cwd, tgt)
                if err != nil {
+                       err = ErrLine(err)
                        break
                }
                _, err = fdTmp.Seek(0, io.SeekStart)
                if err != nil {
+                       err = ErrLine(err)
                        break
                }
                r := recfile.NewReader(fdTmp)
@@ -413,6 +415,7 @@ CmdSwitch:
                                if errors.Is(err, io.EOF) {
                                        break
                                }
+                               err = ErrLine(err)
                                break CmdSwitch
                        }
                        fmt.Println(cwdMustRel(cwd, m["Target"]))
@@ -426,10 +429,7 @@ CmdSwitch:
                                p = append(p, "..")
                        }
                        p = append(p, doFile)
-                       rel, err := filepath.Rel(Cwd, path.Join(p...))
-                       if err != nil {
-                               panic(err)
-                       }
+                       rel := mustRel(Cwd, path.Join(p...))
                        fmt.Println(rel)
                }
        case CmdNameRedoTargets:
@@ -438,6 +438,7 @@ CmdSwitch:
                }
                tgts, err = targetsWalker(tgts)
                if err != nil {
+                       err = ErrLine(err)
                        break
                }
                sort.Strings(tgts)
@@ -451,6 +452,7 @@ CmdSwitch:
                var tgtsKnown []string
                tgtsKnown, err = targetsWalker([]string{Cwd})
                if err != nil {
+                       err = ErrLine(err)
                        break
                }
                deps := map[string]map[string]struct{}{}
@@ -481,6 +483,7 @@ CmdSwitch:
                for _, tgt := range tgts {
                        ood, err = isOOD(Cwd, tgt, 0, nil)
                        if err != nil {
+                               err = ErrLine(err)
                                break
                        }
                        if ood {
@@ -491,12 +494,14 @@ CmdSwitch:
                if tgtsWasEmpty {
                        tgts, err = targetsWalker([]string{Cwd})
                        if err != nil {
+                               err = ErrLine(err)
                                break
                        }
                }
                sort.Strings(tgts)
                var srcs []string
                srcs, err = sourcesWalker(tgts)
+               err = ErrLine(err)
                sort.Strings(srcs)
                for _, src := range srcs {
                        fmt.Println(src)
@@ -508,12 +513,14 @@ CmdSwitch:
                for _, tgt := range tgts {
                        inode, err = inodeFromFileByPath(tgt)
                        if err != nil {
+                               err = ErrLine(err)
                                break
                        }
                        err = recfileWrite(os.Stdout, append(
                                []recfile.Field{{Name: "Target", Value: tgt}},
                                inode.RecfileFields()...)...)
                        if err != nil {
+                               err = ErrLine(err)
                                break
                        }
                }