summaryrefslogtreecommitdiffstats
path: root/hostinfo/printer.py
diff options
context:
space:
mode:
Diffstat (limited to 'hostinfo/printer.py')
-rw-r--r--hostinfo/printer.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/hostinfo/printer.py b/hostinfo/printer.py
index 4302e04..d635d0a 100644
--- a/hostinfo/printer.py
+++ b/hostinfo/printer.py
@@ -82,14 +82,14 @@ class Printer:
return (lambda key: self._should_display(_get_full_key(prev_key, key),
filter_key))
- def _print(self, value, printer, filter_key=None, sort=None):
+ def _print(self, value, printer, filter_key=None, sort=None, force=False):
try:
value = value.strip().splitlines()
except AttributeError:
pass
if isinstance(value, dict):
- self._print_dict(value, printer, filter_key, sort)
+ self._print_dict(value, printer, filter_key, sort, force)
elif isinstance(value, list):
self._print_list(value, printer, filter_key)
elif value is None:
@@ -126,7 +126,7 @@ class Printer:
else:
self._print(value, printer, filter_key)
- def _print_dict(self, value, printer, filter_key, sort):
+ def _print_dict(self, value, printer, filter_key, sort, force):
keys = _sort_with_list(
[(key, full_key) for key in value.keys()
for full_key in [_get_full_key(printer.full_key, key)]
@@ -140,6 +140,7 @@ class Printer:
_space(filter_key, printer.full_key, printer, True)
+ found = False
for (key, full_key) in keys:
new_filter_key = None
if filter_key is not None:
@@ -148,6 +149,7 @@ class Printer:
elif full_key != filter_key:
continue
+ found = True
new_printer = prefix.Printer(full_key, printer)
if filter_key is None:
new_printer.set_label(self._get_label(key, full_key), maxlength)
@@ -155,15 +157,18 @@ class Printer:
self._print_key(full_key, value[key], new_printer, new_filter_key)
_space(filter_key, printer.full_key, new_printer)
+ if force and not found:
+ printer.pprint('')
+
def _get_label(self, key, full_key):
if full_key in self.labels:
return self.labels[full_key]
return key
- def info(self, key, label=None, maxlength=0):
+ def info(self, key, label=None, maxlength=0, force=False):
printer = prefix.Printer()
if label is not None:
printer.set_label(label, maxlength)
- self._print(self.data, printer, filter_key=key,
+ self._print(self.data, printer, filter_key=key, force=force,
sort=['hostname', 'arch', 'os', 'addresses', 'ports'])