in cmd/output.go [90:129]
func printTable(response map[string]interface{}, filter []string) {
format := "table"
table := tablewriter.NewWriter(os.Stdout)
for k, v := range response {
valueType := reflect.TypeOf(v)
if valueType.Kind() == reflect.Slice {
items, ok := v.([]interface{})
if !ok {
continue
}
fmt.Printf("%v:\n", k)
var header []string
for _, item := range items {
row, ok := item.(map[string]interface{})
if !ok || len(row) < 1 {
continue
}
if len(header) == 0 {
if len(filter) > 0 {
header = filter
} else {
for field := range row {
header = append(header, field)
}
sort.Strings(header)
}
table.SetHeader(header)
}
var rowArray []string
for _, field := range header {
rowArray = append(rowArray, jsonify(row[field], format))
}
table.Append(rowArray)
}
} else {
fmt.Printf("%v = %v\n", k, v)
}
}
table.Render()
}