From 5067ea7110c2bc04f5339c411ae539e08c1ffbe4 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Wed, 23 Apr 2014 16:11:26 -0400 Subject: [PATCH] Rework output format in confetty to accomodate non-optimal health nodes --- bin/confetty | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/bin/confetty b/bin/confetty index 9f6ed525..fa0ecbd9 100755 --- a/bin/confetty +++ b/bin/confetty @@ -67,6 +67,7 @@ conserversequence = '\x05c' # ctrl-e, c oldtcattr = termios.tcgetattr(sys.stdin.fileno()) netserver = None + def updatestatus(stateinfo): status = consolename info = [] @@ -83,6 +84,32 @@ def updatestatus(stateinfo): sys.stdout.flush() +def recurse_format(datum, levels=0): + ret = '' + import json + return json.dumps(datum, indent=1) + if isinstance(datum, dict): + for key in datum.iterkeys(): + if datum[key] is None: + continue + ret += key + ':' + if type(datum[key]) in (str, unicode): + ret += datum[key] + '\n' + else: + ret += recurse_format(datum[key], levels + 1) + elif isinstance(datum, list): + if type(datum[0]) in (str, unicode): + ret += '[' + ",".join(datum) + ']\n' + else: + ret += '[' + elems = [] + for elem in datum: + elems.append('{' + recurse_format(elem, levels + 1) + '}') + ret += ','.join(elems) + ret += (' ' * levels) + ']\n' + return ret + + def prompt(): sys.stdout.write('\x1b]0;confetty: %s\x07' % target) try: @@ -225,7 +252,7 @@ def do_command(command, server): if res[key] is None: attrstr = '%s=""' % key elif type(res[key]) == list: - attrstr = '%s=["%s"]' % (key, '","'.join(res[key])) + attrstr = '%s=%s' % (key, recurse_format(res[key])) elif 'value' in res[key] and res[key]['value'] is not None: attrstr = '%s="%s"' % (key, res[key]['value']) elif 'value' in res[key] and res[key]['value'] is None: @@ -242,8 +269,11 @@ def do_command(command, server): notes.append( ('Derived from expression "%s"' % res[key]['expression'])) - notestr = '(' + ', '.join(notes) + ')' - output = '{0:<40} {1:>39}'.format(attrstr, notestr) + if notes: + notestr = '(' + ', '.join(notes) + ')' + output = '{0:<40} {1:>39}'.format(attrstr, notestr) + else: + output = attrstr print(output) elif argv[0] == 'start': targpath = fullpath_target(argv[1])