@@ -248,19 +248,34 @@ def extend_parser(parser):
248
248
return parser
249
249
250
250
251
+ def get_dict (obj , fields ):
252
+ if fields :
253
+ return {k : v for k , v in obj .attributes .items ()
254
+ if k in fields }
255
+ return obj .attributes
256
+
257
+
251
258
class JSONPrinter (object ):
252
259
def display (self , d , ** kwargs ):
253
260
import json # noqa
254
-
255
261
print (json .dumps (d ))
256
262
263
+ def display_list (self , data , fields ):
264
+ import json # noqa
265
+ print (json .dumps ([get_dict (obj , fields ) for obj in data ]))
266
+
257
267
258
268
class YAMLPrinter (object ):
259
269
def display (self , d , ** kwargs ):
260
270
import yaml # noqa
261
-
262
271
print (yaml .safe_dump (d , default_flow_style = False ))
263
272
273
+ def display_list (self , data , fields ):
274
+ import yaml # noqa
275
+ print (yaml .safe_dump (
276
+ [get_dict (obj , fields ) for obj in data ],
277
+ default_flow_style = False ))
278
+
264
279
265
280
class LegacyPrinter (object ):
266
281
def display (self , d , ** kwargs ):
@@ -300,6 +315,15 @@ def display_dict(d, padding):
300
315
value = getattr (obj , obj ._short_print_attr )
301
316
print ('%s: %s' % (obj ._short_print_attr , value ))
302
317
318
+ def display_list (self , data , fields , ** kwargs ):
319
+ verbose = kwargs .get ('verbose' , False )
320
+ for obj in data :
321
+ if isinstance (obj , gitlab .base .RESTObject ):
322
+ self .display (get_dict (obj , fields ), verbose = verbose , obj = obj )
323
+ else :
324
+ print (obj )
325
+ print ('' )
326
+
303
327
304
328
PRINTERS = {
305
329
'json' : JSONPrinter ,
@@ -310,28 +334,15 @@ def display_dict(d, padding):
310
334
311
335
def run (gl , what , action , args , verbose , output , fields ):
312
336
g_cli = GitlabCLI (gl , what , action , args )
313
- ret_val = g_cli ()
337
+ data = g_cli ()
314
338
315
339
printer = PRINTERS [output ]()
316
340
317
- def get_dict (obj ):
318
- if fields :
319
- return {k : v for k , v in obj .attributes .items ()
320
- if k in fields }
321
- return obj .attributes
322
-
323
- if isinstance (ret_val , dict ):
324
- printer .display (ret_val , verbose = True , obj = ret_val )
325
- elif isinstance (ret_val , list ):
326
- for obj in ret_val :
327
- if isinstance (obj , gitlab .base .RESTObject ):
328
- printer .display (get_dict (obj ), verbose = verbose , obj = obj )
329
- else :
330
- print (obj )
331
- print ('' )
332
- elif isinstance (ret_val , dict ):
333
- printer .display (ret_val , verbose = verbose , obj = ret_val )
334
- elif isinstance (ret_val , gitlab .base .RESTObject ):
335
- printer .display (get_dict (ret_val ), verbose = verbose , obj = ret_val )
336
- elif isinstance (ret_val , six .string_types ):
337
- print (ret_val )
341
+ if isinstance (data , dict ):
342
+ printer .display (data , verbose = True , obj = data )
343
+ elif isinstance (data , list ):
344
+ printer .display_list (data , fields , verbose = verbose )
345
+ elif isinstance (data , gitlab .base .RESTObject ):
346
+ printer .display (get_dict (data , fields ), verbose = verbose , obj = data )
347
+ elif isinstance (data , six .string_types ):
348
+ print (data )
0 commit comments