-func mkdirs(pth string) error {
- if _, err := os.Stat(pth); err == nil {
- return nil
+var (
+ NoSync bool = false
+ StderrKeep bool = false
+ StderrSilent bool = false
+ StderrPrefix string
+ Jobs sync.WaitGroup
+
+ flagTrace = flag.Bool("x", false, "trace (sh -x) current targets")
+ flagTraceAll = flag.Bool("xx", false, fmt.Sprintf("trace (sh -x) all targets (%s=1)", EnvTrace))
+ flagStderrKeep = flag.Bool("logs", false, fmt.Sprintf("keep job's stderr (%s=1)", EnvStderrKeep))
+ flagStderrSilent = flag.Bool("silent", false, fmt.Sprintf("do not print job's stderr (%s=1)", EnvStderrSilent))
+)
+
+type RunErr struct {
+ Tgt string
+ DoFile string
+ Started *time.Time
+ Finished *time.Time
+ Err error
+}
+
+func (e *RunErr) Name() string {
+ var name string
+ if e.DoFile == "" {
+ name = e.Tgt
+ } else {
+ name = fmt.Sprintf("%s (%s)", e.Tgt, e.DoFile)