Add onboard command

This commit is contained in:
Arturo Filastò
2018-06-25 16:31:44 +02:00
parent 38a5637cf5
commit 7951ee6bb5
7 changed files with 257 additions and 35 deletions
+4 -3
View File
@@ -13,6 +13,7 @@ import (
"github.com/fatih/color"
colorable "github.com/mattn/go-colorable"
"github.com/ooni/probe-cli/internal/log/handlers/cli/progress"
"github.com/ooni/probe-cli/internal/util"
)
// Default handler outputting to stderr.
@@ -68,7 +69,7 @@ func logSectionTitle(w io.Writer, f log.Fields) error {
title := f.Get("title").(string)
fmt.Fprintf(w, "┏"+strings.Repeat("━", colWidth+2)+"┓\n")
fmt.Fprintf(w, "┃ %s ┃\n", RightPad(title, colWidth))
fmt.Fprintf(w, "┃ %s ┃\n", util.RightPad(title, colWidth))
fmt.Fprintf(w, "┗"+strings.Repeat("━", colWidth+2)+"┛\n")
return nil
}
@@ -85,7 +86,7 @@ func logTable(w io.Writer, f log.Fields) error {
continue
}
line := fmt.Sprintf("%s: %s", color.Sprint(name), f.Get(name))
lineLength := escapeAwareRuneCountInString(line)
lineLength := util.EscapeAwareRuneCountInString(line)
lines = append(lines, line)
if colWidth < lineLength {
colWidth = lineLength
@@ -95,7 +96,7 @@ func logTable(w io.Writer, f log.Fields) error {
fmt.Fprintf(w, "┏"+strings.Repeat("━", colWidth+2)+"┓\n")
for _, line := range lines {
fmt.Fprintf(w, "┃ %s ┃\n",
RightPad(line, colWidth),
util.RightPad(line, colWidth),
)
}
fmt.Fprintf(w, "┗"+strings.Repeat("━", colWidth+2)+"┛\n")
+11 -10
View File
@@ -8,6 +8,7 @@ import (
"time"
"github.com/apex/log"
"github.com/ooni/probe-cli/internal/util"
)
// XXX Copy-pasta from nettest/groups
@@ -118,21 +119,21 @@ func logResultItem(w io.Writer, f log.Fields) error {
fmt.Fprintf(w, "┢"+strings.Repeat("━", colWidth*2+2)+"┪\n")
}
firstRow := RightPad(fmt.Sprintf("#%d - %s", rID, startTime.Format(time.RFC822)), colWidth*2)
firstRow := util.RightPad(fmt.Sprintf("#%d - %s", rID, startTime.Format(time.RFC822)), colWidth*2)
fmt.Fprintf(w, "┃ "+firstRow+" ┃\n")
fmt.Fprintf(w, "┡"+strings.Repeat("━", colWidth*2+2)+"┩\n")
summary := makeSummary(name, f.Get("summary").(string))
fmt.Fprintf(w, fmt.Sprintf("│ %s %s│\n",
RightPad(name, colWidth),
RightPad(summary[0], colWidth)))
util.RightPad(name, colWidth),
util.RightPad(summary[0], colWidth)))
fmt.Fprintf(w, fmt.Sprintf("│ %s %s│\n",
RightPad(networkName, colWidth),
RightPad(summary[1], colWidth)))
util.RightPad(networkName, colWidth),
util.RightPad(summary[1], colWidth)))
fmt.Fprintf(w, fmt.Sprintf("│ %s %s│\n",
RightPad(asn, colWidth),
RightPad(summary[2], colWidth)))
util.RightPad(asn, colWidth),
util.RightPad(summary[2], colWidth)))
if index == totalCount-1 {
fmt.Fprintf(w, "└┬──────────────┬──────────────┬──────────────┬")
@@ -156,9 +157,9 @@ func logResultSummary(w io.Writer, f log.Fields) error {
}
// └┬──────────────┬──────────────┬──────────────┬
fmt.Fprintf(w, " │ %s │ %s │ %s │\n",
RightPad(fmt.Sprintf("%d tests", tests), 12),
RightPad(fmt.Sprintf("%d nets", networks), 12),
RightPad(fmt.Sprintf("%d ⬆ %d ⬇", dataUp, dataDown), 12))
util.RightPad(fmt.Sprintf("%d tests", tests), 12),
util.RightPad(fmt.Sprintf("%d nets", networks), 12),
util.RightPad(fmt.Sprintf("%d ⬆ %d ⬇", dataUp, dataDown), 12))
fmt.Fprintf(w, " └──────────────┴──────────────┴──────────────┘\n")
return nil
-22
View File
@@ -1,22 +0,0 @@
package cli
import (
"regexp"
"strings"
"unicode/utf8"
)
// Finds the control character sequences (like colors)
var ctrlFinder = regexp.MustCompile("\x1b\x5b[0-9]+\x6d")
func escapeAwareRuneCountInString(s string) int {
n := utf8.RuneCountInString(s)
for _, sm := range ctrlFinder.FindAllString(s, -1) {
n -= utf8.RuneCountInString(sm)
}
return n
}
func RightPad(str string, length int) string {
return str + strings.Repeat(" ", length-escapeAwareRuneCountInString(str))
}