98 lines
2.3 KiB
Go
98 lines
2.3 KiB
Go
package output
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/apex/log"
|
|
"github.com/ooni/probe-cli/internal/util"
|
|
)
|
|
|
|
// Progress logs a progress type event
|
|
func Progress(key string, perc float64, msg string) {
|
|
log.WithFields(log.Fields{
|
|
"type": "progress",
|
|
"key": key,
|
|
"percentage": perc,
|
|
}).Info(msg)
|
|
}
|
|
|
|
// ResultItemData is the metadata about a result
|
|
type ResultItemData struct {
|
|
ID int64
|
|
Name string
|
|
StartTime time.Time
|
|
Summary string
|
|
Runtime float64
|
|
Country string
|
|
NetworkName string
|
|
ASN string
|
|
Done bool
|
|
DataUsageDown int64
|
|
DataUsageUp int64
|
|
Index int
|
|
TotalCount int
|
|
}
|
|
|
|
// ResultItem logs a progress type event
|
|
func ResultItem(result ResultItemData) {
|
|
log.WithFields(log.Fields{
|
|
"type": "result_item",
|
|
"id": result.ID,
|
|
"name": result.Name,
|
|
"start_time": result.StartTime,
|
|
"summary": result.Summary,
|
|
"country": result.Country,
|
|
"network_name": result.NetworkName,
|
|
"asn": result.ASN,
|
|
"runtime": result.Runtime,
|
|
"done": result.Done,
|
|
"data_usage_down": result.DataUsageDown,
|
|
"data_usage_up": result.DataUsageUp,
|
|
"index": result.Index,
|
|
"total_count": result.TotalCount,
|
|
}).Info("result item")
|
|
}
|
|
|
|
type ResultSummaryData struct {
|
|
TotalTests int64
|
|
TotalDataUsageUp int64
|
|
TotalDataUsageDown int64
|
|
TotalNetworks int64
|
|
}
|
|
|
|
func ResultSummary(result ResultSummaryData) {
|
|
log.WithFields(log.Fields{
|
|
"type": "result_summary",
|
|
"total_tests": result.TotalTests,
|
|
"total_data_usage_up": result.TotalDataUsageUp,
|
|
"total_data_usage_down": result.TotalDataUsageDown,
|
|
"total_networks": result.TotalNetworks,
|
|
}).Info("result summary")
|
|
}
|
|
|
|
// SectionTitle is the title of a section
|
|
func SectionTitle(text string) {
|
|
log.WithFields(log.Fields{
|
|
"type": "section_title",
|
|
"title": text,
|
|
}).Info(text)
|
|
}
|
|
|
|
func Paragraph(text string) {
|
|
const width = 80
|
|
fmt.Println(util.WrapString(text, width))
|
|
}
|
|
|
|
func Bullet(text string) {
|
|
const width = 80
|
|
fmt.Printf("• %s\n", util.WrapString(text, width))
|
|
}
|
|
|
|
func PressEnterToContinue(text string) {
|
|
fmt.Print(text)
|
|
bufio.NewReader(os.Stdin).ReadBytes('\n')
|
|
}
|