_ = XLATOR.gettext
ngettext = XLATOR.ngettext
-__version__ = '0.6.0'
+__version__ = '0.6.1'
# =============================================================================
LOG.debug(_("Module-Info:") + '\n' + pp(self.module_info.as_dict()))
self.empty_line()
- if self.module_info.exists_on_forge:
- self.show_forgeinfo()
- else:
- print(_("Module {!r} not found on Puppet forge.").format(self.module_name))
+ self.module_info.show()
print(_('Last checked for Puppet forge:') + ' ' + self.module_info.date_checked)
self.empty_line()
- # -------------------------------------------------------------------------
- def show_forgeinfo(self):
-
- msg = _("Information from Puppet forge:")
- print(msg)
- self.line(width=len(msg))
- self.empty_line()
-
- label = {}
- label['created_at'] = _("Created at:")
- label['updated_at'] = _("Updated at:")
- label['homepage_url'] = _("Project URL:")
-
-
# =============================================================================
import collections
import time
import os
+import shutil
from pathlib import Path
# Own modules
from .. import pp, DEFAULT_FORGE_API_URL, DEFAULT_HTTP_TIMEOUT, MAX_HTTP_TIMEOUT
from .. import DEFAULT_VAR_DIR
+from .. import DEFAULT_TERMINAL_WIDTH, DEFAULT_TERMINAL_HEIGHT
from ..errors import BaseHookError, BaseModuleInfoError
from .owner_info import ForgeOwnerInfo
-__version__ = '0.5.1'
+__version__ = '0.6.0'
LOG = logging.getLogger(__name__)
return module_info
+ # -------------------------------------------------------------------------
+ def show(self, file=None, flush=False):
+
+ def my_print(message):
+ print(message, file=file, flush=flush)
+
+ def my_line(width=None, linechar='-', end='\n'):
+ lchar = str(linechar).strip()
+ if not lchar:
+ lchar = '-'
+
+ if not width:
+ term_size = shutil.get_terminal_size(
+ (DEFAULT_TERMINAL_WIDTH, DEFAULT_TERMINAL_HEIGHT))
+ width = term_size.columns
+
+ lin = (lchar * width)[0:width]
+ print(lin, end=end, file=file, flush=flush)
+
+ if not self.exists_on_forge:
+ msg = _("Module {!r} not found on Puppet forge.").format(self.full_name)
+ my_print(msg)
+ return
+
+ msg = _("Information about {!r} from Puppet forge:").format(self.full_name)
+ my_print(msg)
+ my_line(width=len(msg))
+ my_print('')
+
+ labels = {}
+ max_len_label = 1
+ labels['created_at'] = _("Created at:")
+ labels['updated_at'] = _("Updated at:")
+ labels['homepage_url'] = _("Project URL:")
+ labels['deprecated_at'] = _("Deprecated at:")
+ labels['deprecated_for'] = _("Deprecated for:")
+ labels['downloads'] = _("Downloads:")
+ labels['feedback_score'] = _("Feedback score:")
+ labels['endorsement'] = _('Endorsement:')
+ labels['superseded_by'] = _('Superseded by:')
+
+ labels_sorted = (
+ 'created_at', 'updated_at', 'deprecated_at', 'deprecated_for', 'superseded_by',
+ 'endorsement', 'downloads', 'feedback_score', 'homepage_url',
+ )
+
+ for label in labels.keys():
+ if len(labels[label]) > max_len_label:
+ max_len_label = len(labels[label])
+
+ for label in labels_sorted:
+ lbl = labels[label]
+ val = getattr(self, label, None)
+ if label == 'superseded_by' and val and isinstance(val, Mapping) and 'slug' in val:
+ val = val['slug']
+ if val is None:
+ val = '~'
+ msg = "{lbl:<{max}} {val}".format(lbl=lbl, max=max_len_label, val=val)
+ my_print(msg)
+ my_print('')
+
# =============================================================================
if __name__ == "__main__":