]> Cypherpunks.ru repositories - goredo.git/commitdiff
Properly space shorter output messages
authorSergey Matveev <stargrave@stargrave.org>
Thu, 26 Nov 2020 14:10:12 +0000 (17:10 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 26 Nov 2020 14:10:12 +0000 (17:10 +0300)
log.go
status.go

diff --git a/log.go b/log.go
index ebfb39493043b630f6b839ff75d6cecd54c0a91c..2745fd4ee71a05f90837f80f1fd2e2137f4e304b 100644 (file)
--- a/log.go
+++ b/log.go
@@ -72,9 +72,21 @@ var (
        flagLogPid  = flag.Bool("log-pid", false, fmt.Sprintf("append PIDs (%s=1)", EnvLogPid))
        flagLogJS   = flag.Bool("log-js", false, fmt.Sprintf("enable jobserver messages logging (%s=1)", EnvLogJS))
 
-       LogMutex sync.Mutex
+       LogMutex   sync.Mutex
+       LogLenPrev int
 )
 
+func fillUpToTermSize(s, end string) string {
+       sLen := len(s)
+       if sLen < LogLenPrev {
+               s += strings.Repeat(" ", LogLenPrev-sLen)
+               LogLenPrev = sLen
+       } else {
+               LogLenPrev = sLen
+       }
+       return s + end
+}
+
 func trace(level, format string, args ...interface{}) {
        var p string
        if MyPid != 0 {
@@ -83,7 +95,9 @@ func trace(level, format string, args ...interface{}) {
        switch level {
        case CNone:
                LogMutex.Lock()
-               os.Stderr.WriteString(StderrPrefix + p + fmt.Sprintf(format+"\n", args...))
+               os.Stderr.WriteString(fillUpToTermSize(
+                       StderrPrefix+p+fmt.Sprintf(format, args...), "\n",
+               ))
                LogMutex.Unlock()
                return
        case CDebug:
@@ -116,7 +130,7 @@ func trace(level, format string, args ...interface{}) {
        msg := fmt.Sprintf(format, args...)
        msg = StderrPrefix + colourize(level, p+strings.Repeat(". ", Level)+msg)
        LogMutex.Lock()
-       os.Stderr.WriteString(msg + "\n")
+       os.Stderr.WriteString(fillUpToTermSize(msg, "\n"))
        LogMutex.Unlock()
 }
 
index f203b7411202d86c3ae52d13ab49db9115f9bc29..994e431d57739f1848c386b92003338cea2f0e98 100644 (file)
--- a/status.go
+++ b/status.go
@@ -21,7 +21,6 @@ import (
        "flag"
        "fmt"
        "os"
-       "strings"
 )
 
 const (
@@ -65,7 +64,6 @@ func statusInit() {
                waiting := 0
                done := 0
                var out string
-               outLenPrev := 0
                buf := make([]byte, 1)
                var n int
                for {
@@ -86,25 +84,19 @@ func statusInit() {
                        }
                        if NoColor {
                                out = fmt.Sprintf(
-                                       "\rrun: %d wait: %d done: %d\r",
+                                       "\rrun: %d wait: %d done: %d",
                                        running, waiting, done,
                                )
                        } else {
                                out = fmt.Sprintf(
-                                       "\rrun: %s%d%s wait: %s%d%s done: %s%d%s\r",
+                                       "\rrun: %s%d%s wait: %s%d%s done: %s%d%s",
                                        CRedo, running, CReset,
                                        CWait, waiting, CReset,
                                        CJS, done, CReset,
                                )
                        }
-                       if len(out) < outLenPrev {
-                               outLenPrev = len(out)
-                               out += strings.Repeat(" ", outLenPrev-len(out))
-                       } else {
-                               outLenPrev = len(out)
-                       }
                        LogMutex.Lock()
-                       os.Stderr.WriteString(out)
+                       os.Stderr.WriteString(fillUpToTermSize(out, "\r"))
                        LogMutex.Unlock()
                }
        }()