From 260eef5f68b27bc7ed92e875679891b469301d13 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Fri, 17 May 2013 13:44:36 +0200 Subject: Printer: add more spaces for better structure of the output The new output has more spaces for better readablility. If you want to get the old format you could use --nospaces or -n. --- bin/hostinfo | 32 +++++++++++++++++++++----------- hostinfo/printer.py | 13 +++++++++++-- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/bin/hostinfo b/bin/hostinfo index 5a2a516..5cb4247 100755 --- a/bin/hostinfo +++ b/bin/hostinfo @@ -19,9 +19,9 @@ def _get_data(path): stream = file(path, 'r') return yaml.load(stream) -def print_info(path, key=None, oneline=False, verbose=False): +def print_info(path, key=None, oneline=False, verbose=False, nospaces=False): data = _get_data(path) - p = printer.Printer(data, oneline, verbose) + p = printer.Printer(data, oneline, verbose, nospaces) p.info(key) def _print_keys(data, prefix = ''): @@ -71,14 +71,24 @@ def find_host(host): def main(): self_name = sys.argv.pop(0) - optlist, args = getopt.gnu_getopt(sys.argv, 'ofkv', - ['oneline', 'file', 'keys', 'verbose']) - flags = [opt for (opt, value) in optlist if value == ''] - - file = '--file' in flags or '-f' in flags - oneline = '--oneline' in flags or '-o' in flags - keys = '--keys' in flags or '-k' in flags - verbose = '--verbose' in flags or '-v' in flags + file = oneline = keys = verbose = nospaces = False + try: + optlist, args = getopt.gnu_getopt(sys.argv, 'ofkvn', + ['oneline', 'file', 'keys', 'verbose', + 'nospaces']) + opts = {} + for key, value in optlist: + opts[key] = value + + file = any([o in opts for o in ['--file', '-f']]) + oneline = any([o in opts for o in ['--oneline', '-f']]) + keys = any([o in opts for o in ['--keys', '-k']]) + verbose = any([o in opts for o in ['--verbose', '-v']]) + nospaces = any([o in opts for o in ['--nospaces', '-n']]) + except getopt.GetoptError, e: + print("Error: %s" % e) + print + args = [] if len(args) < 1: print('Usage: %s [info]' % self_name) @@ -98,7 +108,7 @@ def main(): if len(args) > 1: key = args[1] - print_info(path, key=key, oneline=oneline, verbose=verbose) + print_info(path, key=key, oneline=oneline, verbose=verbose, nospaces=nospaces) sys.exit(0) if __name__ == '__main__': diff --git a/hostinfo/printer.py b/hostinfo/printer.py index 9d05431..426821c 100644 --- a/hostinfo/printer.py +++ b/hostinfo/printer.py @@ -29,10 +29,11 @@ class Printer: ignore = ['vserver-host', 'groups'] - def __init__(self, data, oneline, verbose): + def __init__(self, data, oneline, verbose, nospaces): self.data = data self.oneline = oneline self.verbose = verbose + self.nospaces = nospaces def _sort_with_list(self, list, sort): def helper(value): @@ -95,6 +96,8 @@ class Printer: sort) maxlength = max(map(len, map(lambda (key, full_key): self._get_label(key, full_key), keys))) + if not self.nospaces and filter_key is None and prefix == '': + pprint() for (key, full_key) in keys: if filter_key is None or filter_key.startswith(full_key): new_filter_key = filter_key @@ -105,7 +108,10 @@ class Printer: if filter_key is None: label = "%s: " % self._get_label(key, full_key) if prefix == '': - label = label.rjust(maxlength+4) + if self.nospaces: + label = label.rjust(maxlength+4) + else: + label = (label + " ").rjust(maxlength+6) else: label = label.ljust(maxlength+2) @@ -118,6 +124,9 @@ class Printer: except AttributeError: self._print(value[key], new_pprint, full_key, new_filter_key) + if not self.nospaces and filter_key is None and prefix == '': + pprint() + def _print_group_by(self, value, pprint, prefix, filter_key, group, format, sort=None): d = {} for e in value: -- cgit v1.2.3-1-g7c22