Add support for Join sets where the parity protects the split files
[rarslave2.git] / PAR2Set / ExtractFirstBase.py
index 7acfc63..c62d842 100644 (file)
@@ -28,40 +28,41 @@ __license__   = "GNU GPL v2 (or, at your option, any later version)"
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 import logging
-import PAR2Set.Base
-import rsutil.common
+from subprocess import CalledProcessError
+from PAR2Set import Base
 
-class ExtractFirstBase (PAR2Set.Base.Base):
-       """Base class for PAR2Set types which run the extraction routine before
-       the repair routine"""
+class ExtractFirstBase(Base):
 
-       def runAll (self):
-               """Run the extraction, repair, and delete stages"""
+    ############################################################################
 
-               # Extraction Stage
-               try:
-                       self.runExtract()
-               except (RuntimeError, OSError):
-                       logging.critical('Extraction stage failed for: %s' % self.p2file)
-                       raise
+    def run(self):
 
-               self.update_matches ()
+        # Extraction Stage
+        try:
+            self.extract ()
+        except (CalledProcessError, OSError):
+            logging.critical('Extraction stage failed for: %s' % self)
+            raise
 
-               # Repair Stage
-               try:
-                       self.runVerifyAndRepair()
-               except (RuntimeError, OSError):
-                       logging.critical('Repair stage failed for: %s' % self.p2file)
-                       raise
+        self.updateFilesystemState()
 
-               self.update_matches ()
+        # Repair Stage
+        try:
+            self.repair()
+        except (CalledProcessError, OSError):
+            logging.critical('Repair stage failed for: %s' % self)
+            raise
 
-               # Deletion Stage
-               try:
-                       self.runDelete()
-               except (RuntimeError, OSError):
-                       logging.critical('Deletion stage failed for: %s' % self.p2file)
-                       raise
+        self.updateFilesystemState()
 
-               logging.info ('Successfully completed: %s' % self.p2file)
+        # Deletion Stage
+        try:
+            self.delete ()
+        except (CalledProcessError, OSError):
+            logging.critical('Deletion stage failed for: %s' % self)
+            raise
+
+        logging.info ('Successfully completed: %s' % self)
+
+    ############################################################################