Просмотр исходного кода

prefer aec library over raw ANSI sequences

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 2 недель назад
Родитель
Сommit
1297f97aef
3 измененных файлов с 14 добавлено и 15 удалено
  1. 11 12
      cmd/formatter/ansi.go
  2. 1 1
      go.mod
  3. 2 2
      go.sum

+ 11 - 12
cmd/formatter/ansi.go

@@ -20,47 +20,46 @@ import (
 	"fmt"
 
 	"github.com/acarl005/stripansi"
+	"github.com/morikuni/aec"
 )
 
 var disableAnsi bool
 
-func ansi(code string) string {
-	return fmt.Sprintf("\033%s", code)
-}
-
 func saveCursor() {
 	if disableAnsi {
 		return
 	}
-	fmt.Print(ansi("7"))
+	// see https://github.com/morikuni/aec/pull/5
+	fmt.Print(aec.Save)
 }
 
 func restoreCursor() {
 	if disableAnsi {
 		return
 	}
-	fmt.Print(ansi("8"))
+	// see https://github.com/morikuni/aec/pull/5
+	fmt.Print(aec.Restore)
 }
 
 func showCursor() {
 	if disableAnsi {
 		return
 	}
-	fmt.Print(ansi("[?25h"))
+	fmt.Print(aec.Show)
 }
 
 func moveCursor(y, x int) {
 	if disableAnsi {
 		return
 	}
-	fmt.Print(ansi(fmt.Sprintf("[%d;%dH", y, x)))
+	fmt.Print(aec.Position(uint(y), uint(x)))
 }
 
 func carriageReturn() {
 	if disableAnsi {
 		return
 	}
-	fmt.Print(ansi(fmt.Sprintf("[%dG", 0)))
+	fmt.Print(aec.Column(0))
 }
 
 func clearLine() {
@@ -68,7 +67,7 @@ func clearLine() {
 		return
 	}
 	// Does not move cursor from its current position
-	fmt.Print(ansi("[2K"))
+	fmt.Print(aec.EraseLine(aec.EraseModes.Tail))
 }
 
 func moveCursorUp(lines int) {
@@ -76,7 +75,7 @@ func moveCursorUp(lines int) {
 		return
 	}
 	// Does not add new lines
-	fmt.Print(ansi(fmt.Sprintf("[%dA", lines)))
+	fmt.Print(aec.Up(uint(lines)))
 }
 
 func moveCursorDown(lines int) {
@@ -84,7 +83,7 @@ func moveCursorDown(lines int) {
 		return
 	}
 	// Does not add new lines
-	fmt.Print(ansi(fmt.Sprintf("[%dB", lines)))
+	fmt.Print(aec.Down(uint(lines)))
 }
 
 func newLine() {

+ 1 - 1
go.mod

@@ -34,7 +34,7 @@ require (
 	github.com/moby/patternmatcher v0.6.0
 	github.com/moby/sys/atomicwriter v0.1.0
 	github.com/moby/term v0.5.2
-	github.com/morikuni/aec v1.0.0
+	github.com/morikuni/aec v1.1.0
 	github.com/opencontainers/go-digest v1.0.0
 	github.com/opencontainers/image-spec v1.1.1
 	github.com/otiai10/copy v1.14.1

+ 2 - 2
go.sum

@@ -283,8 +283,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
-github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
+github.com/morikuni/aec v1.1.0 h1:vBBl0pUnvi/Je71dsRrhMBtreIqNMYErSAbEeb8jrXQ=
+github.com/morikuni/aec v1.1.0/go.mod h1:xDRgiq/iw5l+zkao76YTKzKttOp2cwPEne25HDkJnBw=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=