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')
 | 
						|
}
 |