summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-05-17 13:44:36 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-05-17 13:44:36 +0200
commit260eef5f68b27bc7ed92e875679891b469301d13 (patch)
tree5f46d0b30a0a06d6007f84cf870446295f3cc3a8
parentb1817bfd9a9a2e755b66b10cf3b74c1145b8f02c (diff)
downloadtools-260eef5f68b27bc7ed92e875679891b469301d13.tar.gz
tools-260eef5f68b27bc7ed92e875679891b469301d13.tar.bz2
tools-260eef5f68b27bc7ed92e875679891b469301d13.zip
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.
-rwxr-xr-xbin/hostinfo32
-rw-r--r--hostinfo/printer.py13
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 <host> [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: