126
def get_filetype(filename):
127
types = [".tar.gz", ".tgz", ".tar.bz2", ".tbz2", ".tar", ".zip"]
128
for filetype in types:
129
if filename.endswith(filetype):
126
133
def get_repacker_class(source_filename, force_gz=True):
127
134
"""Return the appropriate repacker based on the file extension."""
128
if (source_filename.endswith(".tar.gz")
129
or source_filename.endswith(".tgz")):
135
filetype = get_filetype(source_filename)
136
if (filetype == ".tar.gz" or filetype == ".tgz"):
130
137
return TgzTgzRepacker
131
if (source_filename.endswith(".tar.bz2")
132
or source_filename.endswith(".tbz2")):
138
if (filetype == ".tar.bz2" or filetype == ".tbz2"):
134
140
return Tbz2TgzRepacker
135
141
return TgzTgzRepacker
136
if source_filename.endswith(".tar"):
142
if filetype == ".tar":
137
143
return TarTgzRepacker
138
if source_filename.endswith(".zip"):
144
if filetype == ".zip":
139
145
return ZipTgzRepacker
143
def _error_if_exists(target_transport, new_name, source_name):
144
if not source_name.endswith('.tar.gz'):
149
def _error_if_exists(target_transport, new_name, source_name, force_gz=True):
150
source_filetype = get_filetype(source_name)
151
if force_gz and source_filetype != ".tar.gz":
145
152
raise FileExists(new_name)
146
153
source_f = open_file(source_name)
226
233
extra, new_name = os.path.split(new_name)
227
234
target_transport = get_transport(os.path.join(target_dir, extra))
228
235
if target_transport.has(new_name):
229
_error_if_exists(target_transport, new_name, source_name)
236
_error_if_exists(target_transport, new_name, source_name,
231
239
if os.path.isdir(source_name):
232
240
_repack_directory(target_transport, new_name, source_name)