diff --git a/azure/aci.go b/azure/aci.go index e08457490..91c96b19c 100644 --- a/azure/aci.go +++ b/azure/aci.go @@ -27,6 +27,7 @@ import ( "github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" + "github.com/buger/goterm" tm "github.com/buger/goterm" "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" @@ -242,7 +243,8 @@ func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, conta } func streamLogs(ctx context.Context, aciContext store.AciContext, containerGroupName, containerName string, out io.Writer) error { - lastOutput := 0 + terminalWidth := goterm.Width() + numLines := 0 for { select { case <-ctx.Done(): @@ -260,14 +262,20 @@ func streamLogs(ctx context.Context, aciContext store.AciContext, containerGroup // the kind of logs ACI is giving us. Hopefully Azue will give us // a real logs streaming api soon. b := aec.EmptyBuilder - b = b.Up(uint(lastOutput)) + b = b.Up(uint(numLines)) fmt.Fprint(out, b.Column(0).ANSI) for i := 0; i < currentOutput-1; i++ { fmt.Fprintln(out, logLines[i]) } - lastOutput = currentOutput - 1 + numLines = 0 + for i := 0; i < currentOutput-1; i++ { + numLines++ + if len(logLines[i]) > terminalWidth { + numLines += len(logLines[i]) / terminalWidth + } + } time.Sleep(2 * time.Second) }