]> git.ipfire.org Git - pakfire.git/commitdiff
Implement pseudo-script support.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 Aug 2011 12:28:57 +0000 (14:28 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 Aug 2011 12:28:57 +0000 (14:28 +0200)
pakfire/actions.py
pakfire/transaction.py
po/pakfire.pot

index bb048b0b9add5b128977117033b196d8c45d2525..9952dcb3c0966bce71d0e95d3421eca7056123c6 100644 (file)
@@ -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"
 
index 171001b4029ba84a76ca054793ef927d8e03033e..25187e63d44829f9e4b410756976cf3cfaf820ab 100644 (file)
@@ -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
 
index 536ed04d5459d5cc8111c0c488816bf7abd9de42..ca2756b91ae54f71773547454345b4b600863488 100644 (file)
@@ -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 <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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 ""