]> Cypherpunks.ru repositories - goredo.git/blobdiff - main.go
Cache OOD decisions
[goredo.git] / main.go
diff --git a/main.go b/main.go
index 9b614d4e1f9172dc8c5b41ba1e15ba2baba3a1b3..8791af0d41175759dc5fa7f9a1fc78beea1954e1 100644 (file)
--- a/main.go
+++ b/main.go
@@ -55,12 +55,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 +114,7 @@ func main() {
                        CmdNameRedoAffects,
                        CmdNameRedoAlways,
                        CmdNameRedoCleanup,
+                       CmdNameRedoDepFix,
                        CmdNameRedoDot,
                        CmdNameRedoIfchange,
                        CmdNameRedoIfcreate,
@@ -132,6 +135,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 +202,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
@@ -332,7 +339,7 @@ CmdSwitch:
                        }
                }
        case CmdNameRedoIfchange:
-               ok, err = ifchange(tgts, false, traced)
+               ok, err = ifchange(tgts, *flagForcedIfchange, traced)
                if err == nil {
                        err = depsWrite(fdDep, tgts)
                }
@@ -494,6 +501,8 @@ CmdSwitch:
                for _, src := range srcs {
                        fmt.Println(src)
                }
+       case CmdNameRedoDepFix:
+               err = depFix(Cwd)
        default:
                log.Fatalln("unknown command", cmdName)
        }