X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=main.go;h=f8ad7dd423c30052820f392994296cdaaf1acabb;hb=19b13ea1334d377dd9c6a36ea70c9141b8fd447d;hp=5bb158b9f3438a137047ae16202241b30e2bdf2f;hpb=f0f007ed9bb046289965d2a7e64f215e4a50a441;p=goredo.git diff --git a/main.go b/main.go index 5bb158b..f8ad7dd 100644 --- a/main.go +++ b/main.go @@ -25,7 +25,6 @@ import ( "flag" "fmt" "io" - "io/ioutil" "log" "os" "os/signal" @@ -55,12 +54,14 @@ const ( CmdNameRedoStamp = "redo-stamp" CmdNameRedoTargets = "redo-targets" CmdNameRedoWhichdo = "redo-whichdo" + CmdNameRedoDepFix = "redo-depfix" ) var ( Cwd string BuildUUID string IsTopRedo bool // is it the top redo instance + UmaskCur int ) func mustSetenv(key string) { @@ -112,6 +113,7 @@ func main() { CmdNameRedoAffects, CmdNameRedoAlways, CmdNameRedoCleanup, + CmdNameRedoDepFix, CmdNameRedoDot, CmdNameRedoIfchange, CmdNameRedoIfcreate, @@ -132,6 +134,9 @@ func main() { } log.SetFlags(log.Lshortfile) + UmaskCur = syscall.Umask(0) + syscall.Umask(UmaskCur) + var err error Cwd, err = os.Getwd() if err != nil { @@ -196,6 +201,7 @@ func main() { } NoColor = os.Getenv(EnvNoColor) != "" NoSync = os.Getenv(EnvNoSync) == "1" + StopIfMod = os.Getenv(EnvStopIfMod) == "1" switch s := os.Getenv(EnvInodeTrust); s { case "none": InodeTrust = InodeTrustNone @@ -209,14 +215,14 @@ func main() { tracef(CDebug, "inode-trust: %s", InodeTrust) // Those are internal envs - FdOODTgts, err = ioutil.TempFile("", "ood-tgts") + FdOODTgts, err = os.CreateTemp("", "ood-tgts") if err != nil { log.Fatalln(err) } if err = os.Remove(FdOODTgts.Name()); err != nil { log.Fatalln(err) } - FdOODTgtsLock, err = ioutil.TempFile("", "ood-tgts.lock") + FdOODTgtsLock, err = os.CreateTemp("", "ood-tgts.lock") if err != nil { log.Fatalln(err) } @@ -237,7 +243,7 @@ func main() { if _, err = fd.Seek(0, io.SeekStart); err != nil { log.Fatalln(err) } - tgtsRaw, err := ioutil.ReadAll(bufio.NewReader(fd)) + tgtsRaw, err := io.ReadAll(bufio.NewReader(fd)) if err != nil { log.Fatalln(err) } @@ -332,7 +338,7 @@ CmdSwitch: } } case CmdNameRedoIfchange: - ok, err = ifchange(tgts, false, traced) + ok, err = ifchange(tgts, *flagForcedIfchange, traced) if err == nil { err = depsWrite(fdDep, tgts) } @@ -342,8 +348,8 @@ CmdSwitch: } for _, tgt := range tgts { tgtRel, err := filepath.Rel( - filepath.Join(Cwd, DirPrefix), - filepath.Join(Cwd, tgt), + path.Join(Cwd, DirPrefix), + path.Join(Cwd, tgt), ) if err != nil { break @@ -383,7 +389,7 @@ CmdSwitch: log.Fatalln("single target expected") } var fdTmp *os.File - fdTmp, err = ioutil.TempFile("", "whichdo") + fdTmp, err = os.CreateTemp("", "whichdo") if err != nil { break } @@ -494,6 +500,8 @@ CmdSwitch: for _, src := range srcs { fmt.Println(src) } + case CmdNameRedoDepFix: + err = depFix(Cwd) default: log.Fatalln("unknown command", cmdName) }