func printCsv()

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()
}