From e5d6941df3f0e472e2b26def81944a17d3e2f4f1 Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Fri, 31 Dec 2010 14:06:01 +0100
Subject: [PATCH] better list display

---
 cccli/command.py | 27 ++++++++++++++++++++++-----
 cccli/printer.py |  2 +-
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/cccli/command.py b/cccli/command.py
index a0ada54..58aca87 100644
--- a/cccli/command.py
+++ b/cccli/command.py
@@ -172,11 +172,28 @@ class Command(object):
         '''List objects'''
         if len(argv) == 1:
             argv.append("a")
-        items = self.cli.rpc.list(str.join("", argv[1:]))
-        for item in items:
-            pprint.pprint(item)
-            #for key, val in item.items():
-            #    self.printer.out("%s: %s "%(key, val))
+        try:
+            objs = self.cli.rpc.list(str.join("", argv[1:]))
+        except RpcError as e:
+            raise cmdError("RPCError: %s"%str(e))
+        # get all tag list
+        tags = dict()
+        for o in objs:
+            for t,v in o.items():
+                tags[t] = max(len(str(v)), tags.get(t, len(str(t))))
+        # extract id info
+        idsize = tags.pop("id")
+        # print titles
+        self.printer.out("%s%s%s"%(color["yellow"], "id".ljust(idsize+1), color["reset"]), nl=" ")
+        for t,v in tags.items():
+            self.printer.out(t.ljust(v), nl=" ")
+        self.printer.out()
+        # print obj
+        for obj in objs:
+            self.printer.out("%s%s%s"%(color["yellow"], obj.pop("id").ljust(idsize+1), color["reset"]) ,nl=" ")
+            for (t, v) in tags.items():
+                self.printer.out(str(obj.get(t, "")).ljust(v) ,nl=" ")
+            self.printer.out()
     cmd_list.usage = "list [tql]"
 
     def _startstopsdestroypauseresume(self, argv):
diff --git a/cccli/printer.py b/cccli/printer.py
index d447bbf..6a1f004 100644
--- a/cccli/printer.py
+++ b/cccli/printer.py
@@ -68,7 +68,7 @@ class Printer(object):
         self.history.load(self.historyfile)
         self.history.maxsize(self.historysize)
 
-    def out(self, message, fd=sys.stdout, nl=os.linesep, flush=True):
+    def out(self, message="", fd=sys.stdout, nl=os.linesep, flush=True):
         '''Print a message in fd ended by nl'''
         fd.write("%s%s"%(message, nl))
         if flush:
-- 
GitLab