summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
authorjvoisin2011-07-21 15:13:20 +0200
committerjvoisin2011-07-21 15:13:20 +0200
commit9ba599ff326c01911d29c7eb422f0fe02342b502 (patch)
tree5917901bf351bf4c934a9f3a3b3a3a74a228d592 /lib/archive.py
parentef2997745a071c8ae8128d41c0fa3a9d5c85ea8f (diff)
Some cleanup
Diffstat (limited to 'lib/archive.py')
-rw-r--r--lib/archive.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/archive.py b/lib/archive.py
index caa0a32..5b43f11 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -24,12 +24,12 @@ class ZipStripper(parser.Generic_parser):
24 self.zipin.close() 24 self.zipin.close()
25 return metadata 25 return metadata
26 26
27
27class TarStripper(parser.Generic_parser): 28class TarStripper(parser.Generic_parser):
28 def __init__(self, realname, filename, parser, editor, backup): 29 def __init__(self, realname, filename, parser, editor, backup):
29 super(TarStripper, self).__init__(realname, 30 super(TarStripper, self).__init__(realname,
30 filename, parser, editor, backup) 31 filename, parser, editor, backup)
31 self.compression = '' 32 self.compression = ''
32 self.tarin = tarfile.open(self.filename, 'r' + self.compression)
33 self.folder_list = [] 33 self.folder_list = []
34 34
35 def _remove(self, current_file): 35 def _remove(self, current_file):
@@ -44,21 +44,21 @@ class TarStripper(parser.Generic_parser):
44 return current_file 44 return current_file
45 45
46 def remove_all(self): 46 def remove_all(self):
47 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 47 tarin = tarfile.open(self.filename, 'r' + self.compression)
48 self.tarout = tarfile.open(self.filename + parser.POSTFIX, 48 tarout = tarfile.open(self.filename + parser.POSTFIX,
49 'w' + self.compression) 49 'w' + self.compression)
50 for current_file in self.tarin.getmembers(): 50 for current_file in tarin.getmembers():
51 self.tarin.extract(current_file) 51 tarin.extract(current_file)
52 if current_file.type is '0': #is current_file a regular file ? 52 if current_file.type is '0': #is current_file a regular file ?
53 #no backup file 53 #no backup file
54 class_file = mat.create_class_file(current_file.name, False) 54 class_file = mat.create_class_file(current_file.name, False)
55 class_file.remove_all() 55 class_file.remove_all()
56 self.tarout.add(current_file.name, filter=self._remove) 56 tarout.add(current_file.name, filter=self._remove)
57 mat.secure_remove(current_file.name) 57 mat.secure_remove(current_file.name)
58 else: 58 else:
59 self.folder_list.insert(0, current_file.name) 59 self.folder_list.insert(0, current_file.name)
60 self.tarin.close() 60 tarin.close()
61 self.tarout.close() 61 tarout.close()
62 print self.folder_list 62 print self.folder_list
63 63
64 self.remove_folder() 64 self.remove_folder()
@@ -85,9 +85,9 @@ class TarStripper(parser.Generic_parser):
85 return True 85 return True
86 86
87 def is_clean(self): 87 def is_clean(self):
88 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 88 tarin = tarfile.open(self.filename, 'r' + self.compression)
89 for current_file in self.tarin.getmembers(): 89 for current_file in tarin.getmembers():
90 self.tarin.extract(current_file) 90 tarin.extract(current_file)
91 if current_file.type is '0': #is current_file a regular file ? 91 if current_file.type is '0': #is current_file a regular file ?
92 #no backup file 92 #no backup file
93 class_file = mat.create_class_file(current_file.name, False) 93 class_file = mat.create_class_file(current_file.name, False)
@@ -100,14 +100,14 @@ class TarStripper(parser.Generic_parser):
100 mat.secure_remove(current_file.name) 100 mat.secure_remove(current_file.name)
101 else: 101 else:
102 self.folder_list.insert(0, current_file.name) 102 self.folder_list.insert(0, current_file.name)
103 self.tarin.close() 103 tarin.close()
104 self.remove_folder() 104 self.remove_folder()
105 return True 105 return True
106 106
107 def get_meta(self): 107 def get_meta(self):
108 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 108 tarin = tarfile.open(self.filename, 'r' + self.compression)
109 metadata = {} 109 metadata = {}
110 for current_file in self.tarin.getmembers(): 110 for current_file in tarin.getmembers():
111 if current_file.type is '0': 111 if current_file.type is '0':
112 if not self.is_file_clean(current_file):#if there is meta 112 if not self.is_file_clean(current_file):#if there is meta
113 current_meta = {} 113 current_meta = {}
@@ -117,11 +117,11 @@ class TarStripper(parser.Generic_parser):
117 current_meta['uname'] = current_file.uname 117 current_meta['uname'] = current_file.uname
118 current_meta['gname'] = current_file.gname 118 current_meta['gname'] = current_file.gname
119 metadata[current_file.name] = current_meta 119 metadata[current_file.name] = current_meta
120 tarin.close()
120 return metadata 121 return metadata
121 122
122 def remove_folder(self): 123 def remove_folder(self):
123 for folder in self.folder_list: #delete remainings folders 124 [shutil.rmtree(folder) for folder in self.folder_list]
124 shutil.rmtree(folder)
125 self.folder_list = [] 125 self.folder_list = []
126 126
127class GzipStripper(TarStripper): 127class GzipStripper(TarStripper):