Make sorting printer sort tables in place

This commit is contained in:
Jordan Liggitt 2019-04-05 00:21:54 -04:00
parent 7013827309
commit 53e55d314a

View File

@ -46,16 +46,30 @@ type SortingPrinter struct {
} }
func (s *SortingPrinter) PrintObj(obj runtime.Object, out io.Writer) error { func (s *SortingPrinter) PrintObj(obj runtime.Object, out io.Writer) error {
if !meta.IsListType(obj) { if table, isTable := obj.(*metav1beta1.Table); isTable && len(table.Rows) > 1 {
return s.Delegate.PrintObj(obj, out) parsedField, err := RelaxedJSONPathExpression(s.SortField)
if err != nil {
parsedField = s.SortField
} }
if sorter, err := NewTableSorter(table, parsedField); err != nil {
return err
} else if err := sorter.Sort(); err != nil {
return err
}
return s.Delegate.PrintObj(table, out)
}
if meta.IsListType(obj) {
if err := s.sortObj(obj); err != nil { if err := s.sortObj(obj); err != nil {
return err return err
} }
return s.Delegate.PrintObj(obj, out) return s.Delegate.PrintObj(obj, out)
} }
return s.Delegate.PrintObj(obj, out)
}
func (s *SortingPrinter) sortObj(obj runtime.Object) error { func (s *SortingPrinter) sortObj(obj runtime.Object) error {
objs, err := meta.ExtractList(obj) objs, err := meta.ExtractList(obj)
if err != nil { if err != nil {