def test_fill_exact_width(self): msg = "message" pre = "<" suf = ">" self.assertEqual("%-*.*s" % (5, 10, msg), fill_exact_width(msg, 5, 10)) self.assertEqual("重uř ", fill_exact_width("重uř", 5, 10)) self.assertEqual("%10.5s" % msg, fill_exact_width(msg, 10, 5, left=False)) self.assertEqual("%s%.5s%s" % (pre, msg, suf), fill_exact_width(msg, 0, 5, prefix=pre, suffix=suf))
def test_fill_exact_width(self): msg = "message" pre = "<" suf = ">" self.assertEqual("%-*.*s" % (5, 10, msg), fill_exact_width(msg, 5, 10)) self.assertEqual("重uř ", fill_exact_width("重uř", 5, 10)) self.assertEqual("%10.5s" % msg, fill_exact_width(msg, 10, 5, left=False)) self.assertEqual("%s%.5s%s" % (pre, msg, suf), fill_exact_width(msg, 0, 5, prefix=pre, suffix=suf))
def run(self, extcmds): if len(extcmds) >= 1 and extcmds[0] in ('all', 'disabled', 'enabled'): arg = extcmds[0] extcmds = extcmds[1:] else: arg = 'enabled' extcmds = [x.lower() for x in extcmds] verbose = self.base.conf.verbose repos = list(self.base.repos.values()) repos.sort(key=operator.attrgetter('id')) enabled_repos = self.base.repos.enabled() term = self.output.term on_ehibeg = term.FG_COLOR['green'] + term.MODE['bold'] on_dhibeg = term.FG_COLOR['red'] on_hiend = term.MODE['normal'] tot_num = 0 cols = [] for repo in repos: if len(extcmds) and not _repo_match(repo, extcmds): continue (ehibeg, dhibeg, hiend) = '', '', '' ui_enabled = '' ui_endis_wid = 0 ui_num = "" ui_excludes_num = '' force_show = False if arg == 'all' or repo.id in extcmds or repo.name in extcmds: force_show = True (ehibeg, dhibeg, hiend) = (on_ehibeg, on_dhibeg, on_hiend) if repo in enabled_repos: enabled = True if arg == 'enabled': force_show = False elif arg == 'disabled' and not force_show: continue if force_show or verbose: ui_enabled = ehibeg + _('enabled') + hiend ui_endis_wid = exact_width(_('enabled')) if not verbose: ui_enabled += ": " ui_endis_wid += 2 if verbose: ui_size = _repo_size(self.base.sack, repo) # We don't show status for list disabled if arg != 'disabled' or verbose: num = len( self.base.sack.query().filter(reponame__eq=repo.id)) ui_num = _num2ui_num(num) tot_num += num else: enabled = False if arg == 'disabled': force_show = False elif arg == 'enabled' and not force_show: continue ui_enabled = dhibeg + _('disabled') + hiend ui_endis_wid = exact_width(_('disabled')) if not verbose: rid = repo.id if enabled and repo.metalink: mdts = repo.metadata.timestamp if mdts > repo.metadata.md_timestamp: rid = '*' + rid cols.append( (rid, repo.name, (ui_enabled, ui_endis_wid), ui_num)) else: if enabled: md = repo.metadata else: md = None out = [ self.output.fmtKeyValFill(_("Repo-id : "), repo.id), self.output.fmtKeyValFill(_("Repo-name : "), repo.name) ] if force_show or extcmds: out += [ self.output.fmtKeyValFill(_("Repo-status : "), ui_enabled) ] if md and md.revision is not None: out += [ self.output.fmtKeyValFill(_("Repo-revision: "), md.revision) ] if md and md.content_tags: tags = md.content_tags out += [ self.output.fmtKeyValFill(_("Repo-tags : "), ", ".join(sorted(tags))) ] if md and md.distro_tags: for (distro, tags) in md.distro_tags.items(): out += [ self.output.fmtKeyValFill( _("Repo-distro-tags: "), "[%s]: %s" % (distro, ", ".join(sorted(tags)))) ] if md: out += [ self.output.fmtKeyValFill(_("Repo-updated : "), time.ctime(md.md_timestamp)), self.output.fmtKeyValFill(_("Repo-pkgs : "), ui_num), self.output.fmtKeyValFill(_("Repo-size : "), ui_size) ] if repo.metalink: out += [ self.output.fmtKeyValFill(_("Repo-metalink: "), repo.metalink) ] if enabled: ts = repo.metadata.timestamp out += [ self.output.fmtKeyValFill(_(" Updated : "), time.ctime(ts)) ] elif repo.mirrorlist: out += [ self.output.fmtKeyValFill(_("Repo-mirrors : "), repo.mirrorlist) ] baseurls = repo.baseurl if baseurls: out += [ self.output.fmtKeyValFill(_("Repo-baseurl : "), ", ".join(baseurls)) ] elif enabled and md.mirrors: url = "%s (%d more)" % (md.mirrors[0], len(md.mirrors) - 1) out += [ self.output.fmtKeyValFill(_("Repo-baseurl : "), url) ] expire = _expire_str(repo, md) out += [ self.output.fmtKeyValFill(_("Repo-expire : "), expire) ] if repo.exclude: out += [ self.output.fmtKeyValFill(_("Repo-exclude : "), ", ".join(repo.exclude)) ] if repo.include: out += [ self.output.fmtKeyValFill(_("Repo-include : "), ", ".join(repo.include)) ] if ui_excludes_num: out += [ self.output.fmtKeyValFill(_("Repo-excluded: "), ui_excludes_num) ] if repo.repofile: out += [ self.output.fmtKeyValFill(_("Repo-filename: "), repo.repofile) ] logger.log(dnf.logging.DEBUG, "%s\n", "\n".join(map(ucd, out))) if not verbose and cols: # Work out the first (id) and last (enabled/disalbed/count), # then chop the middle (name)... id_len = exact_width(_('repo id')) nm_len = 0 st_len = 0 ui_len = 0 for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if id_len < exact_width(rid): id_len = exact_width(rid) if nm_len < exact_width(rname): nm_len = exact_width(rname) if st_len < (ui_endis_wid + len(ui_num)): st_len = (ui_endis_wid + len(ui_num)) # Need this as well as above for: fill_exact_width() if ui_len < len(ui_num): ui_len = len(ui_num) if arg == 'disabled': # Don't output a status column. left = term.columns - (id_len + 1) elif exact_width(_('status')) > st_len: left = term.columns - (id_len + len(_('status')) + 2) else: left = term.columns - (id_len + st_len + 2) if left < nm_len: # Name gets chopped nm_len = left else: # Share the extra... left -= nm_len id_len += left // 2 nm_len += left - (left // 2) txt_rid = fill_exact_width(_('repo id'), id_len) txt_rnam = fill_exact_width(_('repo name'), nm_len, nm_len) if arg == 'disabled': # Don't output a status column. logger.info("%s %s", txt_rid, txt_rnam) else: logger.info("%s %s %s", txt_rid, txt_rnam, _('status')) for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if arg == 'disabled': # Don't output a status column. logger.info("%s %s", fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, -nm_len)) continue if ui_num: ui_num = fill_exact_width(ui_num, ui_len, left=False) logger.info("%s %s %s%s", fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, nm_len), ui_enabled, ui_num) msg = 'Total packages: %s' % _num2ui_num(tot_num) logger.debug(msg)
def run(self): arg = self.opts.repos_action extcmds = [x.lower() for x in self.opts.repos] verbose = self.base.conf.verbose repos = list(self.base.repos.values()) repos.sort(key=operator.attrgetter('id')) term = self.output.term on_ehibeg = term.FG_COLOR['green'] + term.MODE['bold'] on_dhibeg = term.FG_COLOR['red'] on_hiend = term.MODE['normal'] tot_num = 0 cols = [] if not repos: logger.warning(_('No repositories available')) return include_status = arg == 'all' or (arg == 'enabled-default' and extcmds) repoinfo_output = [] for repo in repos: if len(extcmds) and not _repo_match(repo, extcmds): continue (ehibeg, dhibeg, hiend) = '', '', '' ui_enabled = '' ui_endis_wid = 0 ui_excludes_num = '' if include_status: (ehibeg, dhibeg, hiend) = (on_ehibeg, on_dhibeg, on_hiend) if repo.enabled: enabled = True if arg == 'disabled': continue if any((include_status, verbose, 'repoinfo' in self.opts.command)): ui_enabled = ehibeg + _('enabled') + hiend ui_endis_wid = exact_width(_('enabled')) if verbose or ('repoinfo' in self.opts.command): ui_size = _repo_size(self.base.sack, repo) else: enabled = False if arg == 'enabled' or (arg == 'enabled-default' and not extcmds): continue ui_enabled = dhibeg + _('disabled') + hiend ui_endis_wid = exact_width(_('disabled')) if not any((verbose, ('repoinfo' in self.opts.command))): rid = ucd(repo.id) cols.append((rid, repo.name, (ui_enabled, ui_endis_wid))) else: if enabled: md = repo.metadata else: md = None out = [ self.output.fmtKeyValFill(_("Repo-id : "), repo.id), self.output.fmtKeyValFill(_("Repo-name : "), repo.name) ] if include_status: out += [ self.output.fmtKeyValFill(_("Repo-status : "), ui_enabled) ] if md and repo._repo.getRevision(): out += [ self.output.fmtKeyValFill(_("Repo-revision : "), repo._repo.getRevision()) ] if md and repo._repo.getContentTags(): tags = repo._repo.getContentTags() out += [ self.output.fmtKeyValFill(_("Repo-tags : "), ", ".join(sorted(tags))) ] if md and repo._repo.getDistroTags(): distroTagsDict = { k: v for (k, v) in repo._repo.getDistroTags() } for (distro, tags) in distroTagsDict.items(): out += [ self.output.fmtKeyValFill( _("Repo-distro-tags : "), "[%s]: %s" % (distro, ", ".join(sorted(tags)))) ] if md: num = len( self.base.sack.query( flags=hawkey.IGNORE_EXCLUDES).filterm( reponame__eq=repo.id)) num_available = len( self.base.sack.query().filterm(reponame__eq=repo.id)) ui_num = _num2ui_num(num) ui_num_available = _num2ui_num(num_available) tot_num += num out += [ self.output.fmtKeyValFill( _("Repo-updated : "), dnf.util.normalize_time( repo._repo.getMaxTimestamp())), self.output.fmtKeyValFill(_("Repo-pkgs : "), ui_num), self.output.fmtKeyValFill(_("Repo-available-pkgs: "), ui_num_available), self.output.fmtKeyValFill(_("Repo-size : "), ui_size) ] if repo.metalink: out += [ self.output.fmtKeyValFill(_("Repo-metalink : "), repo.metalink) ] if enabled: ts = repo._repo.getTimestamp() out += [ self.output.fmtKeyValFill( _(" Updated : "), dnf.util.normalize_time(ts)) ] elif repo.mirrorlist: out += [ self.output.fmtKeyValFill(_("Repo-mirrors : "), repo.mirrorlist) ] baseurls = repo.baseurl if baseurls: out += [ self.output.fmtKeyValFill(_("Repo-baseurl : "), ", ".join(baseurls)) ] elif enabled: mirrors = repo._repo.getMirrors() if mirrors: url = "%s (%d more)" % (mirrors[0], len(mirrors) - 1) out += [ self.output.fmtKeyValFill( _("Repo-baseurl : "), url) ] expire = _expire_str(repo, md) out += [ self.output.fmtKeyValFill(_("Repo-expire : "), expire) ] if repo.excludepkgs: # TRANSLATORS: Packages that are excluded - their names like (dnf systemd) out += [ self.output.fmtKeyValFill(_("Repo-exclude : "), ", ".join(repo.excludepkgs)) ] if repo.includepkgs: out += [ self.output.fmtKeyValFill(_("Repo-include : "), ", ".join(repo.includepkgs)) ] if ui_excludes_num: # TRANSLATORS: Number of packages that where excluded (5) out += [ self.output.fmtKeyValFill(_("Repo-excluded : "), ui_excludes_num) ] if repo.repofile: out += [ self.output.fmtKeyValFill(_("Repo-filename : "), repo.repofile) ] repoinfo_output.append("\n".join(map(ucd, out))) if repoinfo_output: print("\n\n".join(repoinfo_output)) if not verbose and cols: # Work out the first (id) and last (enabled/disabled/count), # then chop the middle (name)... id_len = exact_width(_('repo id')) nm_len = 0 st_len = 0 for (rid, rname, (ui_enabled, ui_endis_wid)) in cols: if id_len < exact_width(rid): id_len = exact_width(rid) if nm_len < exact_width(rname): nm_len = exact_width(rname) if st_len < ui_endis_wid: st_len = ui_endis_wid # Need this as well as above for: fill_exact_width() if include_status: if exact_width(_('status')) > st_len: left = term.columns - (id_len + len(_('status')) + 2) else: left = term.columns - (id_len + st_len + 2) else: # Don't output a status column. left = term.columns - (id_len + 1) if left < nm_len: # Name gets chopped nm_len = left else: # Share the extra... left -= nm_len id_len += left // 2 nm_len += left - (left // 2) txt_rid = fill_exact_width(_('repo id'), id_len) if include_status: txt_rnam = fill_exact_width(_('repo name'), nm_len, nm_len) else: txt_rnam = _('repo name') if not include_status: # Don't output a status column. print("%s %s" % (txt_rid, txt_rnam)) else: print("%s %s %s" % (txt_rid, txt_rnam, _('status'))) for (rid, rname, (ui_enabled, ui_endis_wid)) in cols: if not include_status: # Don't output a status column. print("%s %s" % (fill_exact_width(rid, id_len), rname)) continue print("%s %s %s" % (fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, nm_len), ui_enabled)) if any((verbose, ('repoinfo' in self.opts.command))): msg = _('Total packages: {}') print(msg.format(_num2ui_num(tot_num)))
def run(self): extcmds = self.opts.extcmds if len(extcmds) >= 1 and extcmds[0] in ('all', 'disabled', 'enabled'): arg = extcmds[0] extcmds = extcmds[1:] else: arg = 'enabled' extcmds = [x.lower() for x in extcmds] verbose = self.base.conf.verbose repos = list(self.base.repos.values()) repos.sort(key=operator.attrgetter('id')) enabled_repos = self.base.repos.enabled() term = self.output.term on_ehibeg = term.FG_COLOR['green'] + term.MODE['bold'] on_dhibeg = term.FG_COLOR['red'] on_hiend = term.MODE['normal'] tot_num = 0 cols = [] for repo in repos: if len(extcmds) and not _repo_match(repo, extcmds): continue (ehibeg, dhibeg, hiend) = '', '', '' ui_enabled = '' ui_endis_wid = 0 ui_num = "" ui_excludes_num = '' force_show = False if arg == 'all' or repo.id in extcmds or repo.name in extcmds: force_show = True (ehibeg, dhibeg, hiend) = (on_ehibeg, on_dhibeg, on_hiend) if repo in enabled_repos: enabled = True if arg == 'enabled': force_show = False elif arg == 'disabled' and not force_show: continue if force_show or verbose: ui_enabled = ehibeg + _('enabled') + hiend ui_endis_wid = exact_width(_('enabled')) if not verbose: ui_enabled += ": " ui_endis_wid += 2 if verbose: ui_size = _repo_size(self.base.sack, repo) # We don't show status for list disabled if arg != 'disabled' or verbose: num = len(self.base.sack.query().filter( reponame__eq=repo.id)) ui_num = _num2ui_num(num) tot_num += num else: enabled = False if arg == 'disabled': force_show = False elif arg == 'enabled' and not force_show: continue ui_enabled = dhibeg + _('disabled') + hiend ui_endis_wid = exact_width(_('disabled')) if not verbose: rid = repo.id if enabled and repo.metalink: mdts = repo.metadata.timestamp if mdts > repo.metadata.md_timestamp: rid = '*' + rid cols.append((rid, repo.name, (ui_enabled, ui_endis_wid), ui_num)) else: if enabled: md = repo.metadata else: md = None out = [self.output.fmtKeyValFill(_("Repo-id : "), repo.id), self.output.fmtKeyValFill(_("Repo-name : "), repo.name)] if force_show or extcmds: out += [self.output.fmtKeyValFill(_("Repo-status : "), ui_enabled)] if md and md.revision is not None: out += [self.output.fmtKeyValFill(_("Repo-revision: "), md.revision)] if md and md.content_tags: tags = md.content_tags out += [self.output.fmtKeyValFill(_("Repo-tags : "), ", ".join(sorted(tags)))] if md and md.distro_tags: for (distro, tags) in md.distro_tags.items(): out += [self.output.fmtKeyValFill(_("Repo-distro-tags: "), "[%s]: %s" % (distro, ", ".join(sorted(tags))))] if md: out += [ self.output.fmtKeyValFill(_("Repo-updated : "), time.ctime(md.md_timestamp)), self.output.fmtKeyValFill(_("Repo-pkgs : "), ui_num), self.output.fmtKeyValFill(_("Repo-size : "), ui_size)] if repo.metalink: out += [self.output.fmtKeyValFill(_("Repo-metalink: "), repo.metalink)] if enabled: ts = repo.metadata.timestamp out += [self.output.fmtKeyValFill(_(" Updated : "), time.ctime(ts))] elif repo.mirrorlist: out += [self.output.fmtKeyValFill(_("Repo-mirrors : "), repo.mirrorlist)] baseurls = repo.baseurl if baseurls: out += [self.output.fmtKeyValFill(_("Repo-baseurl : "), ", ".join(baseurls))] elif enabled and md.mirrors: url = "%s (%d more)" % (md.mirrors[0], len(md.mirrors) - 1) out += [self.output.fmtKeyValFill(_("Repo-baseurl : "), url)] expire = _expire_str(repo, md) out += [self.output.fmtKeyValFill(_("Repo-expire : "), expire)] if repo.exclude: out += [self.output.fmtKeyValFill(_("Repo-exclude : "), ", ".join(repo.exclude))] if repo.include: out += [self.output.fmtKeyValFill(_("Repo-include : "), ", ".join(repo.include))] if ui_excludes_num: out += [self.output.fmtKeyValFill(_("Repo-excluded: "), ui_excludes_num)] if repo.repofile: out += [self.output.fmtKeyValFill(_("Repo-filename: "), repo.repofile)] logger.log(dnf.logging.DEBUG, "%s\n", "\n".join(map(ucd, out))) if not verbose and cols: # Work out the first (id) and last (enabled/disalbed/count), # then chop the middle (name)... id_len = exact_width(_('repo id')) nm_len = 0 st_len = 0 ui_len = 0 for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if id_len < exact_width(rid): id_len = exact_width(rid) if nm_len < exact_width(rname): nm_len = exact_width(rname) if st_len < (ui_endis_wid + len(ui_num)): st_len = (ui_endis_wid + len(ui_num)) # Need this as well as above for: fill_exact_width() if ui_len < len(ui_num): ui_len = len(ui_num) if arg == 'disabled': # Don't output a status column. left = term.columns - (id_len + 1) elif exact_width(_('status')) > st_len: left = term.columns - (id_len + len(_('status')) + 2) else: left = term.columns - (id_len + st_len + 2) if left < nm_len: # Name gets chopped nm_len = left else: # Share the extra... left -= nm_len id_len += left // 2 nm_len += left - (left // 2) txt_rid = fill_exact_width(_('repo id'), id_len) txt_rnam = fill_exact_width(_('repo name'), nm_len, nm_len) if arg == 'disabled': # Don't output a status column. print("%s %s" % (txt_rid, txt_rnam)) else: print("%s %s %s" % (txt_rid, txt_rnam, _('status'))) for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if arg == 'disabled': # Don't output a status column. print("%s %s" % (fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, -nm_len))) continue if ui_num: ui_num = fill_exact_width(ui_num, ui_len, left=False) print("%s %s %s%s" % (fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, nm_len), ui_enabled, ui_num)) msg = 'Total packages: %s' logger.debug(msg, _num2ui_num(tot_num))
def run(self): arg = self.opts.repos_action extcmds = [x.lower() for x in self.opts.repos] verbose = self.base.conf.verbose repos = list(self.base.repos.values()) repos.sort(key=operator.attrgetter('id')) enabled_repos = list(self.base.repos.iter_enabled()) term = self.output.term on_ehibeg = term.FG_COLOR['green'] + term.MODE['bold'] on_dhibeg = term.FG_COLOR['red'] on_hiend = term.MODE['normal'] tot_num = 0 cols = [] if not repos: logger.warning(_('No repositories available')) return for repo in repos: if len(extcmds) and not _repo_match(repo, extcmds): continue (ehibeg, dhibeg, hiend) = '', '', '' ui_enabled = '' ui_endis_wid = 0 ui_num = "" ui_excludes_num = '' force_show = False if arg == 'all' or repo.id in extcmds or repo.name in extcmds: force_show = True (ehibeg, dhibeg, hiend) = (on_ehibeg, on_dhibeg, on_hiend) if repo in enabled_repos: enabled = True if arg == 'enabled': force_show = False elif arg == 'disabled' and not force_show: continue if any((force_show, verbose, 'repoinfo' in self.opts.command)): ui_enabled = ehibeg + _('enabled') + hiend ui_endis_wid = exact_width(_('enabled')) if not any((verbose, 'repoinfo' in self.opts.command)): ui_enabled += ": " ui_endis_wid += 2 if verbose or ('repoinfo' in self.opts.command): ui_size = _repo_size(self.base.sack, repo) # We don't show status for list disabled if arg != 'disabled' or verbose: num = len(self.base.sack.query().filterm(reponame__eq=repo.id)) ui_num = _num2ui_num(num) tot_num += num else: enabled = False if arg == 'disabled': force_show = False elif arg == 'enabled' and not force_show: continue ui_enabled = dhibeg + _('disabled') + hiend ui_endis_wid = exact_width(_('disabled')) if not any((verbose, ('repoinfo' in self.opts.command))): rid = ucd(repo.id) if enabled and repo.metalink: mdts = repo._repo.getTimestamp() if mdts > repo._repo.getMaxTimestamp(): rid = '*' + rid cols.append((rid, repo.name, (ui_enabled, ui_endis_wid), ui_num)) else: if enabled: md = repo.metadata else: md = None out = [self.output.fmtKeyValFill(_("Repo-id : "), repo.id), self.output.fmtKeyValFill(_("Repo-name : "), repo.name)] if force_show or extcmds: out += [self.output.fmtKeyValFill(_("Repo-status : "), ui_enabled)] if md and repo._repo.getRevision(): out += [self.output.fmtKeyValFill(_("Repo-revision: "), repo._repo.getRevision())] if md and repo._repo.getContentTags(): tags = repo._repo.getContentTags() out += [self.output.fmtKeyValFill(_("Repo-tags : "), ", ".join(sorted(tags)))] if md and repo._repo.getDistroTags(): distroTagsDict = {k: v for (k, v) in repo._repo.getDistroTags()} for (distro, tags) in distroTagsDict.items(): out += [self.output.fmtKeyValFill( _("Repo-distro-tags: "), "[%s]: %s" % (distro, ", ".join(sorted(tags))))] if md: out += [ self.output.fmtKeyValFill( _("Repo-updated : "), dnf.util.normalize_time(repo._repo.getMaxTimestamp())), self.output.fmtKeyValFill(_("Repo-pkgs : "), ui_num), self.output.fmtKeyValFill(_("Repo-size : "), ui_size)] if repo.metalink: out += [self.output.fmtKeyValFill(_("Repo-metalink: "), repo.metalink)] if enabled: ts = repo._repo.getTimestamp() out += [self.output.fmtKeyValFill( _(" Updated : "), dnf.util.normalize_time(ts))] elif repo.mirrorlist: out += [self.output.fmtKeyValFill(_("Repo-mirrors : "), repo.mirrorlist)] baseurls = repo.baseurl if baseurls: out += [self.output.fmtKeyValFill(_("Repo-baseurl : "), ", ".join(baseurls))] elif enabled: mirrors = repo._repo.getMirrors() if mirrors: url = "%s (%d more)" % (mirrors[0], len(mirrors) - 1) out += [self.output.fmtKeyValFill(_("Repo-baseurl : "), url)] expire = _expire_str(repo, md) out += [self.output.fmtKeyValFill(_("Repo-expire : "), expire)] if repo.excludepkgs: # TRANSLATORS: Packages that are excluded - their names like (dnf systemd) out += [self.output.fmtKeyValFill(_("Repo-exclude : "), ", ".join(repo.excludepkgs))] if repo.includepkgs: out += [self.output.fmtKeyValFill(_("Repo-include : "), ", ".join(repo.includepkgs))] if ui_excludes_num: # TRANSLATORS: Number of packages that where excluded (5) out += [self.output.fmtKeyValFill(_("Repo-excluded: "), ui_excludes_num)] if repo.repofile: out += [self.output.fmtKeyValFill(_("Repo-filename: "), repo.repofile)] print("\n" + "\n".join(map(ucd, out))) if not verbose and cols: # Work out the first (id) and last (enabled/disalbed/count), # then chop the middle (name)... id_len = exact_width(_('repo id')) nm_len = 0 st_len = 0 ui_len = 0 for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if id_len < exact_width(rid): id_len = exact_width(rid) if nm_len < exact_width(rname): nm_len = exact_width(rname) if st_len < (ui_endis_wid + len(ui_num)): st_len = (ui_endis_wid + len(ui_num)) # Need this as well as above for: fill_exact_width() if ui_len < len(ui_num): ui_len = len(ui_num) if arg == 'disabled': # Don't output a status column. left = term.columns - (id_len + 1) elif exact_width(_('status')) > st_len: left = term.columns - (id_len + len(_('status')) + 2) else: left = term.columns - (id_len + st_len + 2) if left < nm_len: # Name gets chopped nm_len = left else: # Share the extra... left -= nm_len id_len += left // 2 nm_len += left - (left // 2) txt_rid = fill_exact_width(_('repo id'), id_len) txt_rnam = fill_exact_width(_('repo name'), nm_len, nm_len) if arg == 'disabled': # Don't output a status column. print("%s %s" % (txt_rid, txt_rnam)) else: print("%s %s %s" % (txt_rid, txt_rnam, _('status'))) for (rid, rname, (ui_enabled, ui_endis_wid), ui_num) in cols: if arg == 'disabled': # Don't output a status column. print("%s %s" % (fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, nm_len))) continue if ui_num: ui_num = fill_exact_width(ui_num, ui_len, left=False) print("%s %s %s%s" % (fill_exact_width(rid, id_len), fill_exact_width(rname, nm_len, nm_len), ui_enabled, ui_num)) msg = _('Total packages: %s') logger.debug(msg, _num2ui_num(tot_num))