Skip to content
Snippets Groups Projects
Commit 747dfb55 authored by Seblu's avatar Seblu
Browse files

list now use TqlCommand

parent 077105e1
No related branches found
No related tags found
No related merge requests found
......@@ -8,29 +8,22 @@ CloudControl list command
from cccli.exception import *
from sjrpc.core.exceptions import *
from cccli.printer import Printer, color
from cccli.command.command import OptionCommand
from cccli.command.command import TqlCommand
class Command_list(OptionCommand):
class Command_list(TqlCommand):
'''List objects'''
def __init__(self, cli, argv0):
OptionCommand.__init__(self, cli, argv0)
TqlCommand.__init__(self, cli, argv0)
self.set_usage("%prog [options] [tql]")
self.add_option("-t", action="store_true", dest="table",
help="column aligment display")
self.add_option("-l", action="store_true", dest="align",
help="line aligment display")
self.add_option("-n", "--no-tagdisplay", action="store_false", dest="tagdisplay", default=True,
help="No tag display system")
self.remove_option("-s")
def __call__(self, argv):
self.parse_args(argv)
if self.options.tagdisplay:
self.td = self.cli.tagdisplay.resolve
self.tc = self.cli.tagdisplay.color
else:
self.td = lambda tagname, tagvalue: unicode(tagvalue)
self.tc = lambda tagname: color["reset"]
if len(self.args) == 0:
self.args.append("")
try:
......@@ -49,13 +42,13 @@ class Command_list(OptionCommand):
def _trivial_list(self, objs):
'''Trivial listing of tag'''
for o in objs:
id = self.td("id", o.pop("id"))
tags = " ".join([ "%s%s:%s%s"%(color["reset"],
id = self.tdr("id", o.pop("id"))
tags = " ".join([ "%s%s:%s%s"%(self.tdtc(t),
t,
self.tc(t),
self.td(t, v))
self.tdc(t),
self.tdr(t, v))
for (t,v) in o.items() ])
self.printer.out("%sid:%s%s %s%s"%(color["reset"], self.tc("id"), id, tags, color["reset"]))
self.printer.out("%sid=%s%s %s%s"%(self.tdtc("id"), self.tdc("id"), id, tags, color["reset"]))
def _list_align(self, objs):
'''Listing line aligned'''
......@@ -63,21 +56,21 @@ class Command_list(OptionCommand):
tags = dict()
for o in objs:
for t,v in o.items():
tags[t] = max(len(self.td(t, v)), tags.get(t, len(t)))
tags[t] = max(len(self.tdr(t, v)), tags.get(t, len(t)))
# extract id size
idsize = tags.pop("id")
# dislay each object by line
for o in objs:
# show id tag
line = "%sid:%s%s"%(color["reset"],
self.tc("id"),
self.td("id", o.pop("id")).ljust(idsize + 2))
line = "%sid=%s%s"%(self.tdtc("id"),
self.tdc("id"),
self.tdr("id", o.pop("id")).ljust(idsize + 2))
# show others tags
for tagname in sorted(tags.keys()):
line += "%s%s:%s%s"%(color["reset"],
line += "%s%s:%s%s"%(self.tdtc(tagname),
tagname,
self.tc(tagname),
self.td(tagname, o.get(tagname, u"")).ljust(tags[tagname] + 1))
self.tdc(tagname),
self.tdr(tagname, o.get(tagname, u"")).ljust(tags[tagname] + 1))
self.printer.out("%s%s"%(line, color["reset"]))
def _list_table(self, objs):
......@@ -86,23 +79,24 @@ class Command_list(OptionCommand):
tags = dict()
for o in objs:
for t,v in o.items():
tags[t] = max(len(self.td(t, v)), tags.get(t, len(t)))
tags[t] = max(len(self.tdr(t, v)), tags.get(t, len(t)))
# extract id size
idsize = tags.pop("id")
# print id title
self.printer.out(color["reset"], nl="")
self.printer.out(self.tdtc("id"), nl="")
self.printer.out("id".ljust(idsize+1), nl=" ")
# print others titles
for t,v in tags.items():
self.printer.out(self.tdtc(t), nl="")
self.printer.out(t.ljust(v), nl=" ")
self.printer.out(color["reset"])
# print obj
for obj in objs:
# print id first
self.printer.out(self.tc("id"), nl="")
self.printer.out(self.td("id", obj.pop("id")).ljust(idsize+1), nl=" ")
self.printer.out(self.tdc("id"), nl="")
self.printer.out(self.tdr("id", obj.pop("id")).ljust(idsize+1), nl=" ")
# print others tags
for (t, v) in tags.items():
self.printer.out(self.tc(t), nl="")
self.printer.out(self.td(t, obj.get(t, u"")).ljust(v) ,nl=" ")
self.printer.out(self.tdc(t), nl="")
self.printer.out(self.tdr(t, obj.get(t, u"")).ljust(v) ,nl=" ")
self.printer.out(color["reset"])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment