def __eq__ (self, rhs):
return self.__list_eq (self.likely_files, rhs.likely_files)
+ def run_all (self):
+ par2files = find_par2_files (self.likely_files)
+ par2head = par2files[0]
+
+ join = is_noextract (self.likely_files)
+
+ # Repair Stage
+ repairer = RarslaveRepairer (self.dir, par2head, join)
+ ret = repairer.checkAndRepair () # FIXME: Check return value
+
+ # Extraction Stage
+ extractor = find_extraction_heads (self.dir, self.likely_files)
+ ret = extractor.extract ('extract_dir') # FIXME: Get it from the config
+
+ # Deletion Stage
+ # printlist ( find_deleteable_files (self.likely_files) )
+ deleteable_files = find_deleteable_files (self.likely_files)
+ ret = delete_list (deleteable_files)
+
+def delete_list (files, interactive=False):
+ # Delete a list of files
+ # TODO: Add the ability to confirm deletion, like in the original rarslave
+
+ if interactive:
+ # TODO: prompt here
+ # prompt -> OK_TO_DELETE -> do nothing, fall through
+ # prompt -> NOT_OK -> return immediately
+ pass
+
+ for f in files:
+ # FIXME: re-enable this in production
+ # os.remove (f)
+ print 'rm', f
+
+
def generate_all_parsets (dir):
# Generate all parsets in the given directory.
return parsets
def main ():
- # Setup stage
- print '\nSETUP STAGE'
- DIR = os.path.abspath ('test_material/01/')
- p2files = find_all_par2_files (DIR)
- p2file = p2files[0]
-
- # Repair stage
- print '\nREPAIR STAGE'
- repairer = RarslaveRepairer (DIR, p2file)
- repairer.checkAndRepair ()
-
- # Extraction stage
- print '\nEXTRACTION STAGE'
- files = find_likely_files (get_basename (p2file), DIR)
- extractor = find_extraction_heads (DIR, files)
- extractor.extract('extract_dir')
-
- # Deletion stage
- print '\nDELETION STAGE'
- printlist ( find_deleteable_files (files) )
-
- print '\n\n'
-
- # Setup stage
- print '\nSETUP STAGE'
- DIR = os.path.abspath ('test_material/13/')
- p2files = find_all_par2_files (DIR)
- p2file = p2files[0]
-
- # Repair stage
- print '\nREPAIR STAGE'
- RarslaveRepairer (DIR, p2file, join=True).checkAndRepair ()
-
- # Extraction stage
- print '\nEXTRACTION STAGE'
- files = find_likely_files (get_basename (p2file), DIR)
- find_extraction_heads (DIR, files).extract ('extract_dir')
-
- # Deletion stage
- print '\nDELETION STAGE'
- printlist ( find_deleteable_files (files) )
-
- print '\n\n'
-
- # Setup stage
- print '\nSETUP STAGE'
- DIR = os.path.abspath ('test_material/14/')
- p2files = find_all_par2_files (DIR)
- p2file = p2files[0]
-
- # Repair stage
- print '\nREPAIR STAGE'
- RarslaveRepairer (DIR, p2file, join=True).checkAndRepair ()
-
- # Extraction stage
- print '\nEXTRACTION STAGE'
- files = find_likely_files (get_basename (p2file), DIR)
- find_extraction_heads (DIR, files).extract ('extract_dir')
-
- # Deletion stage
- print '\nDELETEION STAGE'
- printlist ( find_deleteable_files (files) )
-
- #### TESTING ####
- parsets = generate_all_parsets ('test_material/02/')
- print '\n\nPARSETS LEN:', len(parsets)
- for p in parsets:
- print p.likely_files[0]
+ TOPDIR = os.path.abspath ('test_material')
+ for (dir, subdirs, files) in os.walk (TOPDIR):
+ print 'DEBUG: IN DIRECTORY:', dir
+ parsets = generate_all_parsets (dir)
+ for p in parsets:
+ p.run_all ()
if __name__ == '__main__':
main ()