From: Sergey Matveev Date: Thu, 26 Nov 2020 14:10:12 +0000 (+0300) Subject: Properly space shorter output messages X-Git-Tag: v0.3.0~1 X-Git-Url: http://www.git.cypherpunks.ru/?p=goredo.git;a=commitdiff_plain;h=465fef553f227a11b354182f588d9f6aa7fbbe09 Properly space shorter output messages --- diff --git a/log.go b/log.go index ebfb394..2745fd4 100644 --- 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() } diff --git a/status.go b/status.go index f203b74..994e431 100644 --- 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() } }()