@@ -248,19 +248,34 @@ def extend_parser(parser):
248248 return parser
249249
250250
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+
251258class JSONPrinter (object ):
252259 def display (self , d , ** kwargs ):
253260 import json # noqa
254-
255261 print (json .dumps (d ))
256262
263+ def display_list (self , data , fields ):
264+ import json # noqa
265+ print (json .dumps ([get_dict (obj , fields ) for obj in data ]))
266+
257267
258268class YAMLPrinter (object ):
259269 def display (self , d , ** kwargs ):
260270 import yaml # noqa
261-
262271 print (yaml .safe_dump (d , default_flow_style = False ))
263272
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+
264279
265280class LegacyPrinter (object ):
266281 def display (self , d , ** kwargs ):
@@ -300,6 +315,15 @@ def display_dict(d, padding):
300315 value = getattr (obj , obj ._short_print_attr )
301316 print ('%s: %s' % (obj ._short_print_attr , value ))
302317
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+
303327
304328PRINTERS = {
305329 'json' : JSONPrinter ,
@@ -310,28 +334,15 @@ def display_dict(d, padding):
310334
311335def run (gl , what , action , args , verbose , output , fields ):
312336 g_cli = GitlabCLI (gl , what , action , args )
313- ret_val = g_cli ()
337+ data = g_cli ()
314338
315339 printer = PRINTERS [output ]()
316340
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