cli/pkg/cmd/label/shared.go
2022-05-16 10:14:19 +02:00

51 lines
990 B
Go

package label
import (
"reflect"
"strings"
"time"
)
var labelFields = []string{
"color",
"createdAt",
"description",
"id",
"isDefault",
"name",
"updatedAt",
"url",
}
type label struct {
Color string `json:"color"`
CreatedAt time.Time `json:"createdAt"`
Description string `json:"description"`
ID string `json:"node_id"`
IsDefault bool `json:"isDefault"`
Name string `json:"name"`
URL string `json:"url"`
UpdatedAt time.Time `json:"updatedAt"`
}
// ExportData implements cmdutil.exportable
func (l *label) ExportData(fields []string) map[string]interface{} {
v := reflect.ValueOf(l).Elem()
data := map[string]interface{}{}
for _, f := range fields {
switch f {
default:
sf := fieldByName(v, f)
data[f] = sf.Interface()
}
}
return data
}
func fieldByName(v reflect.Value, field string) reflect.Value {
return v.FieldByNameFunc(func(s string) bool {
return strings.EqualFold(field, s)
})
}