From d767668b82655ea5cc69a4084c8bdd3ad47dabc6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 3 Aug 2011 14:28:57 +0200 Subject: [PATCH] Implement pseudo-script support. --- pakfire/actions.py | 27 ++++++++++++++++++++++++ pakfire/transaction.py | 42 ++++++++++++++++++++++-------------- po/pakfire.pot | 48 +++++++++++++++++++++--------------------- 3 files changed, 77 insertions(+), 40 deletions(-) diff --git a/pakfire/actions.py b/pakfire/actions.py index bb048b0b9..9952dcb3c 100644 --- a/pakfire/actions.py +++ b/pakfire/actions.py @@ -44,7 +44,10 @@ class Action(object): class ActionScript(Action): + type = "script" + def run(self): + #print "Pretending to run script: %s" % self.__class__.__name__ pass @@ -64,6 +67,30 @@ class ActionScriptPostUn(ActionScript): pass +class ActionScriptPreUp(ActionScript): + pass + + +class ActionScriptPostUp(ActionScript): + pass + + +class ActionScriptPostTrans(ActionScript): + pass + + +class ActionScriptPostTransIn(ActionScriptPostTrans): + pass + + +class ActionScriptPostTransUn(ActionScriptPostTrans): + pass + + +class ActionScriptPostTransUp(ActionScriptPostTrans): + pass + + class ActionInstall(Action): type = "install" diff --git a/pakfire/transaction.py b/pakfire/transaction.py index 171001b40..25187e63d 100644 --- a/pakfire/transaction.py +++ b/pakfire/transaction.py @@ -19,15 +19,15 @@ PKG_DUMP_FORMAT = " %-21s %-8s %-21s %-18s %6s " from actions import * class Transaction(object): - action_classes = [ - ActionInstall, - ActionUpdate, - ActionRemove, - ActionCleanup, - ActionReinstall, - ActionDowngrade, - ActionChange, - ] + action_classes = { + "install" : [ActionScriptPreIn, ActionInstall, ActionScriptPostIn, ActionScriptPostTransIn], + "reinstall" : [ActionScriptPreIn, ActionInstall, ActionScriptPostIn, ActionScriptPostTransIn], + "remove" : [ActionScriptPreUn, ActionRemove, ActionScriptPostUn, ActionScriptPostTransUn], + "update" : [ActionScriptPreUp, ActionUpdate, ActionScriptPostUp, ActionScriptPostTransUp], + "cleanup" : [ActionCleanup,], + "downgrade" : [ActionScriptPreUp, ActionDowngrade, ActionScriptPostUp, ActionScriptPostTransUp], + "change" : [ActionChange,], + } def __init__(self, pakfire): self.pakfire = pakfire @@ -48,18 +48,28 @@ class Transaction(object): if not steps: return + actions = [] + actions_post = [] + for step in steps: - action = step.get_type() + action_name = step.get_type() pkg = packages.SolvPackage(pakfire, step.get_solvable()) - for action_cls in cls.action_classes: - if action_cls.type == action: - action = action_cls(pakfire, pkg) + try: + classes = transaction.action_classes[action_name] + except KeyError: + raise Exception, "Unknown action required: %s" % action_name + + for action_cls in classes: + action = action_cls(pakfire, pkg) + assert isinstance(action, Action), action - if not isinstance(action, Action): - raise Exception, "Unknown action required: %s" % action + if isinstance(action, ActionScriptPostTrans): + actions_post.append(action) + else: + actions.append(action) - transaction.actions.append(action) + transaction.actions += actions + actions_post return transaction diff --git a/po/pakfire.pot b/po/pakfire.pot index 536ed04d5..ca2756b91 100644 --- a/po/pakfire.pot +++ b/po/pakfire.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-08-03 13:36+0200\n" +"POT-Creation-Date: 2011-08-03 14:24+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,24 +17,24 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ../pakfire/actions.py:74 ../pakfire/actions.py:131 +#: ../pakfire/actions.py:100 ../pakfire/actions.py:157 msgid "Installing" msgstr "" -#: ../pakfire/actions.py:84 +#: ../pakfire/actions.py:110 msgid "Updating" msgstr "" -#: ../pakfire/actions.py:98 +#: ../pakfire/actions.py:124 msgid "Removing" msgstr "" #. Cleaning up leftover files and stuff. -#: ../pakfire/actions.py:116 +#: ../pakfire/actions.py:142 msgid "Cleanup" msgstr "" -#: ../pakfire/actions.py:141 +#: ../pakfire/actions.py:167 msgid "Downgrading" msgstr "" @@ -168,7 +168,7 @@ msgstr "" msgid "Check the system for any errors." msgstr "" -#: ../pakfire/cli.py:247 ../pakfire/transaction.py:165 +#: ../pakfire/cli.py:247 ../pakfire/transaction.py:175 msgid "Repository" msgstr "" @@ -292,11 +292,11 @@ msgstr "" msgid "Name" msgstr "" -#: ../pakfire/packages/base.py:71 ../pakfire/transaction.py:164 +#: ../pakfire/packages/base.py:71 ../pakfire/transaction.py:174 msgid "Arch" msgstr "" -#: ../pakfire/packages/base.py:72 ../pakfire/transaction.py:164 +#: ../pakfire/packages/base.py:72 ../pakfire/transaction.py:174 msgid "Version" msgstr "" @@ -304,7 +304,7 @@ msgstr "" msgid "Release" msgstr "" -#: ../pakfire/packages/base.py:74 ../pakfire/transaction.py:165 +#: ../pakfire/packages/base.py:74 ../pakfire/transaction.py:175 msgid "Size" msgstr "" @@ -402,62 +402,62 @@ msgstr "" msgid " Solutions:" msgstr "" -#: ../pakfire/transaction.py:99 +#: ../pakfire/transaction.py:109 msgid "Downloading packages:" msgstr "" -#: ../pakfire/transaction.py:164 +#: ../pakfire/transaction.py:174 msgid "Package" msgstr "" -#: ../pakfire/transaction.py:169 +#: ../pakfire/transaction.py:179 msgid "Installing:" msgstr "" -#: ../pakfire/transaction.py:170 +#: ../pakfire/transaction.py:180 msgid "Reinstalling:" msgstr "" -#: ../pakfire/transaction.py:171 +#: ../pakfire/transaction.py:181 msgid "Updating:" msgstr "" -#: ../pakfire/transaction.py:172 +#: ../pakfire/transaction.py:182 msgid "Downgrading:" msgstr "" -#: ../pakfire/transaction.py:173 +#: ../pakfire/transaction.py:183 msgid "Removing:" msgstr "" -#: ../pakfire/transaction.py:179 +#: ../pakfire/transaction.py:189 msgid "Transaction Summary" msgstr "" -#: ../pakfire/transaction.py:186 +#: ../pakfire/transaction.py:196 msgid "package" msgstr "" -#: ../pakfire/transaction.py:192 +#: ../pakfire/transaction.py:202 #, python-format msgid "Total download size: %s" msgstr "" -#: ../pakfire/transaction.py:196 +#: ../pakfire/transaction.py:206 #, python-format msgid "Installed size: %s" msgstr "" -#: ../pakfire/transaction.py:198 +#: ../pakfire/transaction.py:208 #, python-format msgid "Freed size: %s" msgstr "" -#: ../pakfire/transaction.py:207 +#: ../pakfire/transaction.py:219 msgid "Is this okay?" msgstr "" -#: ../pakfire/transaction.py:213 +#: ../pakfire/transaction.py:225 msgid "Running transaction" msgstr "" -- 2.39.5