From 0db284bbacede5fdded504168ca1f058d4a4df63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Clemens=20W=C3=A4ltken?= Date: Mon, 25 Sep 2017 11:06:43 -0300 Subject: [PATCH] Only use termbox if tty available --- cli/cli.go | 71 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/cli/cli.go b/cli/cli.go index 4a752026..7510d2c0 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -294,25 +294,28 @@ func start(test *types.TestConfig, sigChan chan os.Signal) result.LambdaResults } launchingOn := fmt.Sprintf("Launching on %s... (be patient)", platform) - termbox.Init() - defer termbox.Close() - termbox.Sync() - renderString(0, 0, launchingOn, coldef, coldef) - renderLogo() - termbox.Flush() - - _, h := termbox.Size() - renderString(0, h-1, "Press ctrl-c to interrupt", coldef, coldef) - termbox.Flush() - - go func() { - for { - event := termbox.PollEvent() - if event.Key == 3 { - sigChan <- syscall.SIGINT + var render bool + err := termbox.Init() + if err == nil { + render = true + defer termbox.Close() + termbox.Sync() + renderString(0, 0, launchingOn, coldef, coldef) + renderLogo() + termbox.Flush() + + _, h := termbox.Size() + renderString(0, h-1, "Press ctrl-c to interrupt", coldef, coldef) + termbox.Flush() + go func() { + for { + event := termbox.PollEvent() + if event.Key == 3 { + sigChan <- syscall.SIGINT + } } - } - }() + }() + } startTime := time.Now() firstTime := true @@ -324,7 +327,7 @@ outer: break outer } currentResult = *result - if firstTime { + if firstTime && render { clearLogo() firstTime = false } @@ -332,22 +335,26 @@ outer: y := 3 totalReqs := 0 regionsData := currentResult.RegionsData() - for _, region := range currentResult.Regions() { - totalReqs += regionsData[region].TotalReqs - y = renderRegion(regionsData[region], y) - y++ + if render { + for _, region := range currentResult.Regions() { + totalReqs += regionsData[region].TotalReqs + y = renderRegion(regionsData[region], y) + y++ + } } - y = 0 - var percentDone float64 - if test.Requests > 0 { - percentDone = float64(totalReqs) / float64(test.Requests) - } else { - percentDone = math.Min(float64(time.Since(startTime).Seconds())/float64(test.Timelimit), 1.0) + if render { + y = 0 + var percentDone float64 + if test.Requests > 0 { + percentDone = float64(totalReqs) / float64(test.Requests) + } else { + percentDone = math.Min(float64(time.Since(startTime).Seconds())/float64(test.Timelimit), 1.0) + } + drawProgressBar(percentDone, y) + + termbox.Flush() } - drawProgressBar(percentDone, y) - - termbox.Flush() case <-sigChan: break outer