]> Cypherpunks.ru repositories - goredo.git/blobdiff - run.go
Check if possible source file actually has .do nearby
[goredo.git] / run.go
diff --git a/run.go b/run.go
index 6a38d5abdf7b735e15beb7023ae43d459cf3e2d3..c85543a0f8d7b4897bfc1ee65f69ef3b87200c82 100644 (file)
--- a/run.go
+++ b/run.go
@@ -21,7 +21,6 @@ package main
 
 import (
        "bufio"
-       "encoding/hex"
        "errors"
        "flag"
        "fmt"
@@ -29,13 +28,13 @@ import (
        "os"
        "os/exec"
        "path"
-       "strconv"
        "strings"
        "sync"
        "syscall"
        "time"
 
        "go.cypherpunks.ru/recfile"
+       "go.cypherpunks.ru/tai64n"
        "golang.org/x/sys/unix"
 )
 
@@ -63,7 +62,8 @@ var (
        StderrPrefix string
        Jobs         sync.WaitGroup
 
-       flagTrace        = flag.Bool("x", false, fmt.Sprintf("trace current target (sh -x) (set %s=1 for all others)", EnvTrace))
+       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))
 )
@@ -102,16 +102,6 @@ func mkdirs(pth string) error {
        return os.MkdirAll(pth, os.FileMode(0777))
 }
 
-func tempsuffix() string {
-       return strconv.FormatInt((time.Now().UnixNano()+int64(os.Getpid()))&0xFFFFFFFF, 16)
-}
-
-func tempfile(dir, prefix string) (*os.File, error) {
-       // It respects umask, unlike ioutil.TempFile
-       name := path.Join(dir, TmpPrefix+prefix+"."+tempsuffix())
-       return os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, os.FileMode(0666))
-}
-
 func isModified(cwd, redoDir, tgt string) (bool, string, error) {
        fdDep, err := os.Open(path.Join(redoDir, tgt+DepSuffix))
        if err != nil {
@@ -420,7 +410,7 @@ func runScript(tgtOrig string, errs chan error, traced bool) error {
                go func() {
                        scanner := bufio.NewScanner(stderr)
                        var line string
-                       ts := new(TAI64N)
+                       ts := new(tai64n.TAI64N)
                        for scanner.Scan() {
                                line = scanner.Text()
                                if strings.HasPrefix(line, childStderrPrefix) {
@@ -429,9 +419,9 @@ func runScript(tgtOrig string, errs chan error, traced bool) error {
                                        continue
                                }
                                if fdStderr != nil {
-                                       tai64nNow(ts)
+                                       tai64n.FromTime(time.Now(), ts)
                                        LogMutex.Lock()
-                                       fmt.Fprintf(fdStderr, "@%s %s\n", hex.EncodeToString(ts[:]), line)
+                                       fmt.Fprintf(fdStderr, "%s %s\n", ts.Encode(), line)
                                        LogMutex.Unlock()
                                }
                                if StderrSilent {