[Yum-devel] [PATCH 2/3] Add history package-list command, to show history view from the pkg POV.
seth vidal
skvidal at fedoraproject.org
Thu Sep 9 20:19:32 UTC 2010
On Thu, 2010-09-09 at 15:20 -0400, James Antill wrote:
> ---
> output.py | 109 ++++++++++++++++++++++++++++++++++++++++++++++++--------
> yumcommands.py | 7 +++-
> 2 files changed, 99 insertions(+), 17 deletions(-)
>
ACK
-sv
> diff --git a/output.py b/output.py
> index 1b6bc70..2287b90 100755
> --- a/output.py
> +++ b/output.py
> @@ -1378,7 +1378,7 @@ to exit.
>
> fmt = "%s | %s | %s | %s | %s"
> print fmt % (utf8_width_fill(_("ID"), 6, 6),
> - utf8_width_fill(_("Login user"), 22, 22),
> + utf8_width_fill(_("Login user"), 24, 24),
> utf8_width_fill(_("Date and time"), 16, 16),
> utf8_width_fill(_("Action(s)"), 14, 14),
> utf8_width_fill(_("Altered"), 7, 7))
> @@ -1393,11 +1393,11 @@ to exit.
> break
>
> done += 1
> - name = self._pwd_ui_username(old.loginuid, 22)
> + name = self._pwd_ui_username(old.loginuid, 24)
> tm = time.strftime("%Y-%m-%d %H:%M",
> time.localtime(old.beg_timestamp))
> num, uiacts = self._history_uiactions(old.trans_data)
> - name = utf8_width_fill(name, 22, 22)
> + name = utf8_width_fill(name, 24, 24)
> uiacts = utf8_width_fill(uiacts, 14, 14)
> rmark = lmark = ' '
> if old.return_code is None:
> @@ -1629,23 +1629,24 @@ to exit.
> num += 1
> print "%4d" % num, line
>
> + _history_state2uistate = {'True-Install' : _('Install'),
> + 'Install' : _('Install'),
> + 'Dep-Install' : _('Dep-Install'),
> + 'Obsoleted' : _('Obsoleted'),
> + 'Obsoleting' : _('Obsoleting'),
> + 'Erase' : _('Erase'),
> + 'Reinstall' : _('Reinstall'),
> + 'Downgrade' : _('Downgrade'),
> + 'Downgraded' : _('Downgraded'),
> + 'Update' : _('Update'),
> + 'Updated' : _('Updated'),
> + }
> def historyInfoCmdPkgsAltered(self, old, pats=[]):
> last = None
> # Note that these don't use _simple_pkg() because we are showing what
> # happened to them in the transaction ... not the difference between the
> # version in the transaction and now.
> - all_uistates = {'True-Install' : _('Install'),
> - 'Install' : _('Install'),
> - 'Dep-Install' : _('Dep-Install'),
> - 'Obsoleted' : _('Obsoleted'),
> - 'Obsoleting' : _('Obsoleting'),
> - 'Erase' : _('Erase'),
> - 'Reinstall' : _('Reinstall'),
> - 'Downgrade' : _('Downgrade'),
> - 'Downgraded' : _('Downgraded'),
> - 'Update' : _('Update'),
> - 'Updated' : _('Updated'),
> - }
> + all_uistates = self._history_state2uistate
> maxlen = 0
> for hpkg in old.trans_data:
> uistate = all_uistates.get(hpkg.state, hpkg.state)
> @@ -1795,6 +1796,84 @@ to exit.
>
> print ''
>
> + def historyPackageListCmd(self, extcmds):
> + """ Shows the user a list of data about the history, from the point
> + of a package(s) instead of via. transactions. """
> + tids = self.history.search(extcmds)
> + if not tids:
> + self.logger.critical(_('Bad package(s), given (nothing found)'))
> + return 1, ['Failed history package-list']
> +
> + all_uistates = self._history_state2uistate
> +
> + fmt = "%s | %s | %s"
> + # REALLY Needs to use columns!
> + print fmt % (utf8_width_fill(_("ID"), 6, 6),
> + utf8_width_fill(_("Action(s)"), 14, 14),
> + utf8_width_fill(_("Package"), 53, 53))
> + print "-" * 79
> + fmt = "%6u | %s | %-50s"
> + last = None
> + for old in self.history.old(tids):
> + # Copy and paste from list ... uh.
> + rmark = lmark = ' '
> + if old.return_code is None:
> + rmark = lmark = '*'
> + elif old.return_code:
> + rmark = lmark = '#'
> + # We don't check .errors, because return_code will be non-0
> + elif old.output:
> + rmark = lmark = 'E'
> + elif old.rpmdb_problems:
> + rmark = lmark = 'P'
> + elif old.trans_skip:
> + rmark = lmark = 's'
> + if old.altered_lt_rpmdb:
> + rmark = '<'
> + if old.altered_gt_rpmdb:
> + lmark = '>'
> +
> + for hpkg in old.trans_data: # Find a pkg to go with each cmd...
> + x,m,u = yum.packages.parsePackages([hpkg], extcmds)
> + if not x and not m:
> + continue
> +
> + uistate = all_uistates.get(hpkg.state, hpkg.state)
> + uistate = utf8_width_fill(uistate, 14)
> +
> + # To chop the name off we need nevra strings, str(pkg) gives
> + # envra so we have to do it by hand ... *sigh*.
> + cn = hpkg.ui_nevra
> +
> + # Should probably use columns here...
> + if False: pass
> + elif (last is not None and
> + last.state == 'Updated' and last.name == hpkg.name and
> + hpkg.state == 'Update'):
> + ln = len(hpkg.name) + 1
> + cn = (" " * ln) + cn[ln:]
> + elif (last is not None and
> + last.state == 'Downgrade' and last.name == hpkg.name and
> + hpkg.state == 'Downgraded'):
> + ln = len(hpkg.name) + 1
> + cn = (" " * ln) + cn[ln:]
> + else:
> + last = None
> + if hpkg.state in ('Updated', 'Downgrade'):
> + last = hpkg
> +
> + print fmt % (old.tid, uistate, cn), "%s%s" % (lmark,rmark)
> +
> + # And, again, copy and paste...
> + lastdbv = self.history.last()
> + if lastdbv is None:
> + self._rpmdb_warn_checks(warn=False)
> + else:
> + # If this is the last transaction, is good and it doesn't
> + # match the current rpmdb ... then mark it as bad.
> + rpmdbv = self.rpmdb.simpleVersion(main_only=True)[0]
> + if lastdbv.end_rpmdbversion != rpmdbv:
> + self._rpmdb_warn_checks()
>
>
> class DepSolveProgressCallBack:
> diff --git a/yumcommands.py b/yumcommands.py
> index b3935f6..351e6b4 100644
> --- a/yumcommands.py
> +++ b/yumcommands.py
> @@ -1329,7 +1329,7 @@ class HistoryCommand(YumCommand):
> return ['history']
>
> def getUsage(self):
> - return "[info|list|summary|addon-info|redo|undo|new]"
> + return "[info|list|summary|addon-info|package-list|redo|undo|new]"
>
> def getSummary(self):
> return _("Display, or use, the transaction history")
> @@ -1358,7 +1358,8 @@ class HistoryCommand(YumCommand):
> base.history._create_db_file()
>
> def doCheck(self, base, basecmd, extcmds):
> - cmds = ('list', 'info', 'summary', 'repeat', 'redo', 'undo', 'new', 'addon-info')
> + cmds = ('list', 'info', 'summary', 'repeat', 'redo', 'undo', 'new',
> + 'addon-info', 'package-list')
> if extcmds and extcmds[0] not in cmds:
> base.logger.critical(_('Invalid history sub-command, use: %s.'),
> ", ".join(cmds))
> @@ -1384,6 +1385,8 @@ class HistoryCommand(YumCommand):
> ret = base.historySummaryCmd(extcmds)
> elif vcmd == 'addon-info':
> ret = base.historyAddonInfoCmd(extcmds)
> + elif vcmd == 'package-list':
> + ret = base.historyPackageListCmd(extcmds)
> elif vcmd == 'undo':
> ret = self._hcmd_undo(base, extcmds)
> elif vcmd in ('redo', 'repeat'):
> --
> 1.7.2
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
More information about the Yum-devel
mailing list