StopIfMod = false
Jobs sync.WaitGroup
- flagTrace *bool
- flagTraceAll *bool
- flagStderrKeep *bool
- flagStderrSilent *bool
+ flagTrace *bool
+ flagTraceAll *bool
+ flagStderrKeep *bool
+ flagStderrSilent *bool
+ flagForcedIfchange *bool
TracedAll bool
fmt.Sprintf("keep job's stderr (%s=1)", EnvStderrKeep))
flagStderrSilent = flag.Bool("s", false,
fmt.Sprintf("silent, do not print job's stderr (%s=1)", EnvStderrSilent))
+ flagForcedIfchange = flag.Bool("f", false, "forced redo-ifchange")
}
type RunError struct {
Finish:
if err != nil {
err = TgtError{tgtOrig, err}
+ fdLock.Close()
}
errs <- err
}()
runErr.Started = &started
fdStdout, err = os.OpenFile(stdoutPath, os.O_RDWR, os.FileMode(0666))
if err != nil {
+ if fdStderr != nil {
+ fdStderr.Close()
+ }
runErr.Err = err
errs <- runErr
return
cmd.Stdout = fdStdout
fdDep, err = os.OpenFile(fdDepPath, os.O_WRONLY|os.O_APPEND, os.FileMode(0666))
if err != nil {
+ if fdStderr != nil {
+ fdStderr.Close()
+ }
+ fdStdout.Close()
runErr.Err = err
errs <- runErr
return