summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/hostinfo6
-rw-r--r--hostinfo/printer.py15
2 files changed, 14 insertions, 7 deletions
diff --git a/bin/hostinfo b/bin/hostinfo
index 4a48e2b..0a36f67 100755
--- a/bin/hostinfo
+++ b/bin/hostinfo
@@ -97,12 +97,14 @@ def print_search(basepath, flags, search, filter_key=None):
p = printer.Printer(data, flags)
if filter_key is not None or flags.details:
- p.info(filter_key, label=_get_label(host), maxlength=max(length))
+ p.info(filter_key, label=_get_label(host),
+ maxlength=max(length), force=True)
else:
if key is None:
print(_get_label(host))
else:
- p.info(key, label=_get_label(host), maxlength=max(length))
+ p.info(key, label=_get_label(host),
+ maxlength=max(length), force=True)
def print_info(path, flags, key=None):
data = _get_data(path)
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'])