[Yum-devel] [PATCH 1/3] Tweak the output for transaction summary some more, use dynamic legnths.

tim.lauridsen at gmail.com tim.lauridsen at gmail.com
Thu Aug 25 15:56:04 UTC 2011


On Wed, Aug 24, 2011 at 11:04 PM, James Antill <james at and.org> wrote:
> ---
>  output.py |   57 ++++++++++++++++++++++++++++++++++++++++++++-------------
>  1 files changed, 44 insertions(+), 13 deletions(-)
>
> diff --git a/output.py b/output.py
> index eefcd69..faffd34 100755
> --- a/output.py
> +++ b/output.py
> @@ -1417,7 +1417,7 @@ class YumOutput:
>  Transaction Summary
>  %s
>  """) % ('=' * self.term.columns))
> -        for action, count, depcount in (
> +        summary_data =  (
>             (_('Install'), len(self.tsInfo.installed),
>              len(self.tsInfo.depinstalled)),
>             (_('Upgrade'), len(self.tsInfo.updated),
> @@ -1429,25 +1429,56 @@ Transaction Summary
>             (_('Skipped (dependency problems)'), len(self.skipped_packages), 0),
>             (_('Not installed'), len(self._not_found_i.values()), 0),
>             (_('Not available'), len(self._not_found_a.values()), 0),
> -        ):
> +        )
> +        max_msg_action   = 0
> +        max_msg_count    = 0
> +        max_msg_pkgs     = 0
> +        max_msg_depcount = 0
> +        for action, count, depcount in summary_data:
> +            if not count and not depcount:
> +                continue
> +
> +            msg_pkgs = P_('Package', 'Packages', count)
> +            len_msg_action   = utf8_width(action)
> +            len_msg_count    = utf8_width(str(count))
> +            len_msg_pkgs     = utf8_width(msg_pkgs)
> +
> +            if depcount:
> +                len_msg_depcount = utf8_width(str(depcount))
> +            else:
> +                len_msg_depcount = 0
> +
> +            # dito. max() by hand, due to RHEL-5
> +            if len_msg_action > max_msg_action:
> +                max_msg_action = len_msg_action
> +            if len_msg_count > max_msg_count:
> +                max_msg_count = len_msg_count
> +            if len_msg_pkgs > max_msg_pkgs:
> +                max_msg_pkgs = len_msg_pkgs
> +            if len_msg_depcount > max_msg_depcount:
> +                max_msg_depcount = len_msg_depcount
> +
> +        for action, count, depcount in summary_data:
>             msg_pkgs = P_('Package', 'Packages', count)
>             if depcount:
>                 msg_deppkgs = P_('Dependent package', 'Dependent packages',
>                                  depcount)
> -                max_msg_pkgs  = utf8_width(_('Package'))
> -                max_msg_pkgs2 = utf8_width(_('Packages'))
> -                if max_msg_pkgs2 > max_msg_pkgs:
> -                    max_msg_pkgs = max_msg_pkgs2
>                 if count:
> -                    msg = '%-9s %5d %-*s (+%5d %s)\n'
> -                    out.append(msg % (action, count, max_msg_pkgs, msg_pkgs,
> -                                      depcount, msg_deppkgs))
> +                    msg = '%s  %*d %s (+%*d %s)\n'
> +                    out.append(msg % (utf8_width_fill(action, max_msg_action),
> +                                      max_msg_count, count,
> +                                      utf8_width_fill(msg_pkgs, max_msg_pkgs),
> +                                      max_msg_depcount, depcount, msg_deppkgs))
>                 else:
> -                    msg = '%-9s %5s %-*s ( %5d %s)\n'
> -                    out.append(msg % (action, '', max_msg_pkgs, '',
> -                                      depcount, msg_deppkgs))
> +                    msg = '%s  %*s %s ( %*d %s)\n'
> +                    out.append(msg % (utf8_width_fill(action, max_msg_action),
> +                                      max_msg_count, '',
> +                                      utf8_width_fill('', max_msg_pkgs),
> +                                      max_msg_depcount, depcount, msg_deppkgs))
>             elif count:
> -                out.append('%-9s %5d %s\n' % (action, count, msg_pkgs))
> +                msg = '%s  %*d %s\n'
> +                out.append(msg % (utf8_width_fill(action, max_msg_action),
> +                                  max_msg_count, count, msg_pkgs))
>         return ''.join(out)
>
>     def postTransactionOutput(self):
> --
> 1.7.6
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>

ACK, but the generated strings with '### Package(s)' kind of suck from
a translation point of view. In some languages the order can be
different 'Package(s) ###'
But is hard to implement in a way to make look good in a terminal :(


More information about the Yum-devel mailing list