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  }