in cmd/output.go [170:207]
func printCsv(response map[string]interface{}, filter []string) {
format := "csv"
enc := csv.NewWriter(os.Stdout)
for _, v := range response {
valueType := reflect.TypeOf(v)
if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map {
items, ok := v.([]interface{})
if !ok {
continue
}
var header []string
for idx, item := range items {
row, ok := item.(map[string]interface{})
if !ok || len(row) < 1 {
continue
}
if idx == 0 {
if len(filter) > 0 {
header = filter
} else {
for rk := range row {
header = append(header, rk)
}
sort.Strings(header)
}
enc.Write(header)
}
var values []string
for _, key := range header {
values = append(values, jsonify(row[key], format))
}
enc.Write(values)
}
}
}
enc.Flush()
}