in cmd/output.go [209:250]
func filterResponse(response map[string]interface{}, filter []string, outputType string) map[string]interface{} {
if filter == nil || len(filter) == 0 {
return response
}
filteredResponse := make(map[string]interface{})
for k, v := range response {
valueType := reflect.TypeOf(v)
if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map {
items, ok := v.([]interface{})
if !ok {
continue
}
var filteredRows []interface{}
for _, item := range items {
row, ok := item.(map[string]interface{})
if !ok || len(row) < 1 {
continue
}
filteredRow := make(map[string]interface{})
for _, filterKey := range filter {
for field := range row {
if filterKey == field {
filteredRow[field] = row[field]
}
}
if outputType == config.COLUMN || outputType == config.CSV || outputType == config.TABLE {
if _, ok := filteredRow[filterKey]; !ok {
filteredRow[filterKey] = ""
}
}
}
filteredRows = append(filteredRows, filteredRow)
}
filteredResponse[k] = filteredRows
} else {
filteredResponse[k] = v
continue
}
}
return filteredResponse
}