@@ -15,6 +15,7 @@ import (
15
15
"github.com/imuxin/ksql/pkg/ext/abs"
16
16
"github.com/imuxin/ksql/pkg/ext/kube"
17
17
"github.com/imuxin/ksql/pkg/parser"
18
+ "github.com/imuxin/ksql/pkg/pretty"
18
19
)
19
20
20
21
func convert [T any ](list []abs.Object ) ([]T , error ) {
@@ -69,61 +70,75 @@ func (r *RunnableImpl[T]) list(table, namespace string, k8sFilters []*parser.Kub
69
70
}), nil
70
71
}
71
72
72
- func (r * RunnableImpl [T ]) List () ([]T , error ) {
73
+ func (r * RunnableImpl [T ]) List () ([]T , []pretty. PrintColumn , error ) {
73
74
list , err := r .list (
74
75
r .ksql .Select .From .Table ,
75
76
r .ksql .Select .Namespace ,
76
77
r .ksql .Select .KubernetesFilters ,
77
78
r .ksql .Select .Where ,
78
79
)
79
80
if err != nil {
80
- return nil , err
81
+ return nil , nil , err
81
82
}
82
-
83
- return convert [T ](list )
83
+ printColumns := r .plugin .Columns (r .ksql )
84
+ rr , err := convert [T ](list )
85
+ return rr , printColumns , err
84
86
}
85
87
86
- func (r * RunnableImpl [T ]) Delete () ([]T , error ) {
88
+ func (r * RunnableImpl [T ]) Delete () ([]T , []pretty. PrintColumn , error ) {
87
89
list , err := r .list (
88
90
r .ksql .Delete .From .Table ,
89
91
r .ksql .Delete .Namespace ,
90
92
r .ksql .Delete .KubernetesFilters ,
91
93
r .ksql .Delete .Where ,
92
94
)
93
95
if err != nil {
94
- return nil , err
96
+ return nil , nil , err
95
97
}
96
98
results , err := r .plugin .Delete (list )
97
99
if err != nil {
98
- return nil , err
100
+ return nil , nil , err
99
101
}
100
- return convert [T ](results )
102
+ printColumns := r .plugin .Columns (r .ksql )
103
+ rr , err := convert [T ](results )
104
+ return rr , printColumns , err
101
105
}
102
106
103
- func (r * RunnableImpl [T ]) Desc () ([]T , error ) {
107
+ func (r * RunnableImpl [T ]) Desc () ([]T , []pretty.PrintColumn , error ) {
108
+ printColumns := []pretty.PrintColumn {
109
+ {
110
+ Name : "SCHEMA" ,
111
+ JSONPath : "{ .spec }" ,
112
+ },
113
+ {
114
+ Name : "VERSION" ,
115
+ JSONPath : "{ .version }" ,
116
+ },
117
+ }
118
+
104
119
sql := fmt .Sprintf ("SELECT * FROM crd NAME %s" , r .ksql .Desc .Table )
105
120
ksql , err := parser .Parse (sql )
106
121
if err != nil {
107
- return nil , err
122
+ return nil , printColumns , err
108
123
}
109
124
rr := RunnableImpl [apiextensionsv1.CustomResourceDefinition ]{
110
125
ksql : ksql ,
111
126
restConfig : r .restConfig ,
112
127
}
113
128
114
- tables , err := rr .List ()
129
+ tables , _ , err := rr .List ()
115
130
if err != nil {
116
- return nil , err
131
+ return nil , printColumns , err
117
132
}
118
133
if len (tables ) == 0 {
119
- return nil , nil
134
+ return nil , printColumns , nil
120
135
}
121
136
122
137
list , err := kube.Describer {
123
138
Tables : tables ,
124
139
}.Desc ()
125
140
if err != nil {
126
- return nil , err
141
+ return nil , printColumns , err
127
142
}
128
143
129
144
_r , err := rxgo .Just (list )().
@@ -135,13 +150,13 @@ func (r *RunnableImpl[T]) Desc() ([]T, error) {
135
150
}).
136
151
ToSlice (len (list ))
137
152
if err != nil {
138
- return nil , err
153
+ return nil , printColumns , err
139
154
}
140
155
141
156
result := make ([]T , len (_r ))
142
157
for i , item := range _r {
143
158
result [i ] = * item .(* T )
144
159
}
145
160
146
- return result , nil
161
+ return result , printColumns , nil
147
162
}
0 commit comments