summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/archive.py')
-rw-r--r--lib/archive.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/archive.py b/lib/archive.py
index aa2a47f..c31fac6 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -13,11 +13,12 @@ class GenericArchiveStripper(parser.Generic_parser):
13 ''' 13 '''
14 Represent a generic archive 14 Represent a generic archive
15 ''' 15 '''
16 def __init__(self, realname, filename, parser, editor, backup): 16 def __init__(self, realname, filename, parser, editor, backup, add2archive):
17 super(GenericArchiveStripper, self).__init__(realname, 17 super(GenericArchiveStripper, self).__init__(realname,
18 filename, parser, editor, backup) 18 filename, parser, editor, backup, add2archive)
19 self.compression = '' 19 self.compression = ''
20 self.folder_list = [] 20 self.folder_list = []
21 self.add2archive = add2archive
21 22
22 def remove_folder(self): 23 def remove_folder(self):
23 [shutil.rmtree(folder) for folder in self.folder_list] 24 [shutil.rmtree(folder) for folder in self.folder_list]
@@ -49,13 +50,18 @@ class ZipStripper(GenericArchiveStripper):
49 zipin.extract(item) 50 zipin.extract(item)
50 if os.path.isfile(item.filename): 51 if os.path.isfile(item.filename):
51 try: 52 try:
52 cfile = mat.create_class_file(item.filename, False) 53 cfile = mat.create_class_file(item.filename, False,
54 self.add2archive)
53 cfile.remove_all() 55 cfile.remove_all()
54 logging.debug('Processing %s from %s' % (item.filename, 56 logging.debug('Processing %s from %s' % (item.filename,
55 self.filename)) 57 self.filename))
58 zipout.write(item.filename)
56 except: 59 except:
57 print('%s\' filefomart is not supported'%item.filename) 60 logging.info('%s\' filefomart is not supported' %
58 zipout.write(item.filename) 61 item.filename)
62 if self.add2archive:
63 zipout.write(item.filename)
64 mat.secure_remove(item.filename)
59 else: 65 else:
60 self.folder_list.insert(0, item.filename) 66 self.folder_list.insert(0, item.filename)
61 logging.info('%s treated' % self.filename) 67 logging.info('%s treated' % self.filename)
@@ -84,11 +90,15 @@ class TarStripper(GenericArchiveStripper):
84 if current_file.type is '0': #is current_file a regular file ? 90 if current_file.type is '0': #is current_file a regular file ?
85 #no backup file 91 #no backup file
86 try: 92 try:
87 cfile = mat.create_class_file(current_file.name, False) 93 cfile = mat.create_class_file(current_file.name, False,
94 self.add2archive)
88 cfile.remove_all() 95 cfile.remove_all()
96 tarout.add(current_file.name, filter=self._remove)
89 except: 97 except:
90 print('%s\' format is not supported'%current_file.name) 98 logging.info('%s\' format is not supported' %
91 tarout.add(current_file.name, filter=self._remove) 99 current_file.name)
100 if self.add2archive:
101 tarout.add(current_file.name, filter=self._remove)
92 mat.secure_remove(current_file.name) 102 mat.secure_remove(current_file.name)
93 else: 103 else:
94 self.folder_list.insert(0, current_file.name) 104 self.folder_list.insert(0, current_file.name)
@@ -123,7 +133,8 @@ class TarStripper(GenericArchiveStripper):
123 tarin.extract(current_file) 133 tarin.extract(current_file)
124 if current_file.type is '0': #is current_file a regular file ? 134 if current_file.type is '0': #is current_file a regular file ?
125 #no backup file 135 #no backup file
126 class_file = mat.create_class_file(current_file.name, False) 136 class_file = mat.create_class_file(current_file.name, False,
137 self.add2archive)
127 if not class_file.is_clean():#if the extracted file is not clean 138 if not class_file.is_clean():#if the extracted file is not clean
128 mat.secure_remove(current_file.name) #remove it 139 mat.secure_remove(current_file.name) #remove it
129 self.remove_folder() #remove all the remaining folders 140 self.remove_folder() #remove all the remaining folders