in tools/kompat/cmd/kompat/main.go [118:158]
func PrettyTable[T any](data []T, wide bool) string {
var headers []string
var rows [][]string
for _, dataRow := range data {
var row []string
// clear headers each time so we only keep one set
headers = []string{}
reflectStruct := reflect.Indirect(reflect.ValueOf(dataRow))
for i := 0; i < reflectStruct.NumField(); i++ {
typeField := reflectStruct.Type().Field(i)
tag := typeField.Tag.Get("table")
if tag == "" {
continue
}
subtags := strings.Split(tag, ",")
if len(subtags) > 1 && subtags[1] == "wide" && !wide {
continue
}
headers = append(headers, subtags[0])
row = append(row, reflect.ValueOf(dataRow).Field(i).String())
}
rows = append(rows, row)
}
out := bytes.Buffer{}
table := tablewriter.NewWriter(&out)
table.SetHeader(headers)
table.SetAutoWrapText(false)
table.SetAutoFormatHeaders(true)
table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
table.SetAlignment(tablewriter.ALIGN_LEFT)
table.SetCenterSeparator("")
table.SetColumnSeparator("")
table.SetRowSeparator("")
table.SetHeaderLine(false)
table.SetBorder(false)
table.SetTablePadding("\t") // pad with tabs
table.SetNoWhiteSpace(true)
table.AppendBulk(rows) // Add Bulk Data
table.Render()
return out.String()
}