| # Copyright 1999-2009 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| from portage.output import colorize, create_color_func |
| bad = create_color_func("BAD") |
| |
| from _emerge.format_size import format_size |
| |
| class PackageCounters(object): |
| |
| def __init__(self): |
| self.upgrades = 0 |
| self.downgrades = 0 |
| self.new = 0 |
| self.newslot = 0 |
| self.reinst = 0 |
| self.uninst = 0 |
| self.blocks = 0 |
| self.blocks_satisfied = 0 |
| self.totalsize = 0 |
| self.restrict_fetch = 0 |
| self.restrict_fetch_satisfied = 0 |
| self.interactive = 0 |
| |
| def __str__(self): |
| total_installs = self.upgrades + self.downgrades + self.newslot + self.new + self.reinst |
| myoutput = [] |
| details = [] |
| myoutput.append("Total: %s package" % total_installs) |
| if total_installs != 1: |
| myoutput.append("s") |
| if total_installs != 0: |
| myoutput.append(" (") |
| if self.upgrades > 0: |
| details.append("%s upgrade" % self.upgrades) |
| if self.upgrades > 1: |
| details[-1] += "s" |
| if self.downgrades > 0: |
| details.append("%s downgrade" % self.downgrades) |
| if self.downgrades > 1: |
| details[-1] += "s" |
| if self.new > 0: |
| details.append("%s new" % self.new) |
| if self.newslot > 0: |
| details.append("%s in new slot" % self.newslot) |
| if self.newslot > 1: |
| details[-1] += "s" |
| if self.reinst > 0: |
| details.append("%s reinstall" % self.reinst) |
| if self.reinst > 1: |
| details[-1] += "s" |
| if self.uninst > 0: |
| details.append("%s uninstall" % self.uninst) |
| if self.uninst > 1: |
| details[-1] += "s" |
| if self.interactive > 0: |
| details.append("%s %s" % (self.interactive, |
| colorize("WARN", "interactive"))) |
| myoutput.append(", ".join(details)) |
| if total_installs != 0: |
| myoutput.append(")") |
| myoutput.append(", Size of downloads: %s" % format_size(self.totalsize)) |
| if self.restrict_fetch: |
| myoutput.append("\nFetch Restriction: %s package" % \ |
| self.restrict_fetch) |
| if self.restrict_fetch > 1: |
| myoutput.append("s") |
| if self.restrict_fetch_satisfied < self.restrict_fetch: |
| myoutput.append(bad(" (%s unsatisfied)") % \ |
| (self.restrict_fetch - self.restrict_fetch_satisfied)) |
| if self.blocks > 0: |
| myoutput.append("\nConflict: %s block" % \ |
| self.blocks) |
| if self.blocks > 1: |
| myoutput.append("s") |
| if self.blocks_satisfied < self.blocks: |
| myoutput.append(bad(" (%s unsatisfied)") % \ |
| (self.blocks - self.blocks_satisfied)) |
| return "".join(myoutput) |
| |