github.com/kubeshop/testkube@v1.17.23/pkg/ui/table.go (about) 1 package ui 2 3 import ( 4 "encoding/json" 5 "io" 6 7 "github.com/olekukonko/tablewriter" 8 ) 9 10 type TableData interface { 11 Table() (header []string, data [][]string) 12 } 13 14 func (ui *UI) Table(tableData TableData, writer io.Writer) { 15 table := tablewriter.NewWriter(writer) 16 table.EnableBorder(false) 17 table.SetHeaderLine(true) 18 19 table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) 20 header, data := tableData.Table() 21 22 if len(header) > 0 { 23 table.SetHeader(header) 24 } 25 26 for _, v := range data { 27 table.Append(v) 28 } 29 table.Render() 30 } 31 32 func (ui *UI) JSONTable(tableData TableData, writer io.Writer) error { 33 _, data := tableData.Table() 34 return json.NewEncoder(writer).Encode(data) 35 } 36 37 func (ui *UI) NewArrayTable(a [][]string) ArrayTable { 38 return ArrayTable(a) 39 } 40 41 func (ui *UI) PrintArrayTable(a [][]string) { 42 t := ui.NewArrayTable(a) 43 ui.Table(t, ui.Writer) 44 } 45 46 type ArrayTable [][]string 47 48 func (a ArrayTable) Table() (header []string, data [][]string) { 49 return []string{}, a 50 }